Index: src/CompilationState.cc
===================================================================
--- src/CompilationState.cc	(revision fd2debf6bc04a25e7312e0b1f5ff93f7d5aff352)
+++ src/CompilationState.cc	(revision 05e6eb547b1ef88c13f322a51ab4e52be696d924)
@@ -39,7 +39,4 @@
 	linemarks = false;
 
-// bootstrapping:
-//   libcfap || treep
-
 // Local Variables: //
 // tab-width: 4 //
Index: src/CompilationState.h
===================================================================
--- src/CompilationState.h	(revision fd2debf6bc04a25e7312e0b1f5ff93f7d5aff352)
+++ src/CompilationState.h	(revision 05e6eb547b1ef88c13f322a51ab4e52be696d924)
@@ -40,5 +40,8 @@
 	linemarks;
 
-
+// is the compiler building prelude or libcfa?
+inline bool buildingLibrary() {
+	return libcfap | treep;
+}
 
 // Local Variables: //
Index: src/Validate/HandleAttributes.cc
===================================================================
--- src/Validate/HandleAttributes.cc	(revision fd2debf6bc04a25e7312e0b1f5ff93f7d5aff352)
+++ src/Validate/HandleAttributes.cc	(revision 05e6eb547b1ef88c13f322a51ab4e52be696d924)
@@ -117,5 +117,5 @@
 				std::string name = attr->normalizedName();
 				if (name == "init_priority") {
-
+					// TODO: implement C++-like init_priority attribute
 				}
 			}
@@ -139,5 +139,5 @@
 							SemanticWarning(attr->location, Warning::GccAttributes,
 								toCString( name, " priorities from 0 to 100 are reserved for the implementation" ) );
-						} else if (priority < 201) {
+						} else if (priority < 201 && ! buildingLibrary()) {
 							SemanticWarning(attr->location, Warning::GccAttributes,
 								toCString( name, " priorities from 101 to 200 are reserved for the implementation" ) );
Index: src/main.cc
===================================================================
--- src/main.cc	(revision fd2debf6bc04a25e7312e0b1f5ff93f7d5aff352)
+++ src/main.cc	(revision 05e6eb547b1ef88c13f322a51ab4e52be696d924)
@@ -183,10 +183,10 @@
 
 			// Read to gcc builtins, if not generating the cfa library
-			FILE * gcc_builtins = fopen( libcfap | treep ? "../prelude/gcc-builtins.cf" : CFA_LIBDIR "/gcc-builtins.cf", "r" );
+			FILE * gcc_builtins = fopen( buildingLibrary() ? "../prelude/gcc-builtins.cf" : CFA_LIBDIR "/gcc-builtins.cf", "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( libcfap | treep ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
+			FILE * extras = fopen( buildingLibrary() ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
 			assertf( extras, "cannot open extras.cf\n" );
 			parse( extras, LinkageSpec::BuiltinC );
@@ -194,10 +194,10 @@
 			if ( ! libcfap ) {
 				// read the prelude in, if not generating the cfa library
-				FILE * prelude = fopen( treep ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
+				FILE * prelude = fopen( buildingLibrary() ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "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( libcfap | treep ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
+				FILE * builtins = fopen( buildingLibrary() ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
 				assertf( builtins, "cannot open builtins.cf\n" );
 				parse( builtins, LinkageSpec::BuiltinCFA );
@@ -274,5 +274,5 @@
 
 		// fix ObjectDecl - replaces ConstructorInit nodes
-		PASS( "fixInit", InitTweak::fix( translationUnit, libcfap || treep ) );
+		PASS( "fixInit", InitTweak::fix( translationUnit, buildingLibrary() ) );
 		if ( ctorinitp ) {
 			dump ( translationUnit );
