Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/Common/SemanticError.h	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -72,7 +72,4 @@
 }
 
-
-
-
 // Local Variables: //
 // tab-width: 4 //
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/Parser/ExpressionNode.cc	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep 27 22:51:55 2017
-// Update Count     : 781
+// Last Modified On : Sat Mar  3 18:22:33 2018
+// Update Count     : 796
 //
 
@@ -58,4 +58,5 @@
 static inline bool checkD( char c ) { return c == 'd' || c == 'D'; }
 static inline bool checkI( char c ) { return c == 'i' || c == 'I'; }
+static inline bool checkB( char c ) { return c == 'b' || c == 'B'; }
 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
 
@@ -116,5 +117,5 @@
 
 	unsigned long long int v;							// converted integral value
-	size_t last = str.length() - 1;						// last character of constant
+	size_t last = str.length() - 1;						// last subscript of constant
 	Expression * ret;
 
@@ -129,8 +130,18 @@
 	} // if
 
-	if ( str[0] == '0' ) {								// octal/hex constant ?
+	// Cannot be "0"
+
+	if ( str[0] == '0' ) {								// radix character ?
 		dec = false;
-		if ( last != 0 && checkX( str[1] ) ) {			// hex constant ?
+		if ( checkX( str[1] ) ) {						// hex constant ?
 			sscanf( (char *)str.c_str(), "%llx", &v );
+			//printf( "%llx %llu\n", v, v );
+		} else if ( checkB( str[1] ) ) {				// binary constant ?
+			v = 0;
+			for ( unsigned int i = 2;; i += 1 ) {		// compute value
+				if ( str[i] == '1' ) v |= 1;
+			  if ( i == last ) break;
+				v <<= 1;
+			} // for
 			//printf( "%llx %llu\n", v, v );
 		} else {										// octal constant
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/Parser/lex.ll	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Thu Feb 22 18:11:27 2018
- * Update Count     : 637
+ * Last Modified On : Sat Mar  3 18:38:16 2018
+ * Update Count     : 640
  */
 
@@ -77,4 +77,5 @@
 %}
 
+binary [0-1]
 octal [0-7]
 nonzero [1-9]
@@ -103,4 +104,8 @@
 nonzero_digits ({nonzero})|({nonzero}({decimal}|"_")*{decimal})
 decimal_constant {nonzero_digits}{integer_suffix_opt}
+
+binary_digits ({binary})|({binary}({binary}|"_")*{binary})
+binary_prefix "0"[bB]"_"?
+binary_constant {binary_prefix}{binary_digits}{integer_suffix_opt}
 
 hex_digits ({hex})|({hex}({hex}|"_")*{hex})
@@ -315,6 +320,7 @@
 
 				/* numeric constants */
+{binary_constant} { NUMERIC_RETURN(INTEGERconstant); }
+{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
 {decimal_constant} { NUMERIC_RETURN(INTEGERconstant); }
-{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
 {hex_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
 {floating_decimal}	{ NUMERIC_RETURN(FLOATING_DECIMALconstant); } // must appear before floating_constant
Index: src/libcfa/concurrency/kernel
===================================================================
--- src/libcfa/concurrency/kernel	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/libcfa/concurrency/kernel	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -79,9 +79,13 @@
 
 // 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;
+	struct processorCtx_t runner;
 
 	// Cluster from which to get threads
Index: src/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/libcfa/concurrency/kernel.c	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -124,4 +124,5 @@
 //-----------------------------------------------------------------------------
 // Processor coroutine
+void ?{}(processorCtx_t & this) {}
 
 // Construct the processor context of the main processor
@@ -130,5 +131,4 @@
 	this.__cor.starter = NULL;
 	this.proc = proc;
-	proc->runner = &this;
 }
 
@@ -137,5 +137,4 @@
 	(this.__cor){ info };
 	this.proc = proc;
-	proc->runner = &this;
 }
 
@@ -150,4 +149,5 @@
 	preemption_alarm = NULL;
 	pending_preemption = false;
+	runner.proc = &this;
 
 	start( &this );
@@ -161,6 +161,6 @@
 	pending_preemption = false;
 	kernel_thread = pthread_self();
-
-	this.runner = &runner;
+	runner.proc = &this;
+
 	__cfaabi_dbg_print_safe("Kernel : constructing main processor context %p\n", &runner);
 	runner{ &this };
@@ -196,4 +196,5 @@
 void main(processorCtx_t & runner) {
 	processor * this = runner.proc;
+	verify(this);
 
 	__cfaabi_dbg_print_safe("Kernel : core %p starting\n", this);
@@ -241,5 +242,5 @@
 void runThread(processor * this, thread_desc * dst) {
 	assert(dst->curr_cor);
-	coroutine_desc * proc_cor = get_coroutine(*this->runner);
+	coroutine_desc * proc_cor = get_coroutine(this->runner);
 	coroutine_desc * thrd_cor = dst->curr_cor;
 
@@ -256,5 +257,5 @@
 
 void returnToKernel() {
-	coroutine_desc * proc_cor = get_coroutine(*this_processor->runner);
+	coroutine_desc * proc_cor = get_coroutine(this_processor->runner);
 	coroutine_desc * thrd_cor = this_thread->curr_cor = this_coroutine;
 	ThreadCtxSwitch(thrd_cor, proc_cor);
@@ -317,14 +318,14 @@
 	machine_context_t ctx;
 	info.context = &ctx;
-	processorCtx_t proc_cor_storage = { proc, &info };
-
-	__cfaabi_dbg_print_safe("Coroutine : created stack %p\n", proc_cor_storage.__cor.stack.base);
+	(proc->runner){ proc, &info };
+
+	__cfaabi_dbg_print_safe("Coroutine : created stack %p\n", get_coroutine(proc->runner)->stack.base);
 
 	//Set global state
-	this_coroutine = &proc->runner->__cor;
+	this_coroutine = get_coroutine(proc->runner);
 	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);
+	__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
@@ -332,10 +333,10 @@
 	// back to here. Instead directly call the main since we already are on the
 	// appropriate stack.
-	proc_cor_storage.__cor.state = Active;
-	main( proc_cor_storage );
-	proc_cor_storage.__cor.state = Halted;
+	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);
+	__cfaabi_dbg_print_safe("Kernel : core %p main ended (%p)\n", proc, &proc->runner);
 
 	return NULL;
@@ -352,10 +353,10 @@
 void kernel_first_resume(processor * this) {
 	coroutine_desc * src = this_coroutine;
-	coroutine_desc * dst = get_coroutine(*this->runner);
+	coroutine_desc * dst = get_coroutine(this->runner);
 
 	verify( !preemption_state.enabled );
 
 	create_stack(&dst->stack, dst->stack.size);
-	CtxStart(this->runner, CtxInvokeCoroutine);
+	CtxStart(&this->runner, CtxInvokeCoroutine);
 
 	verify( !preemption_state.enabled );
@@ -411,12 +412,4 @@
 	verify( !preemption_state.enabled );
 	lock( ready_queue_lock __cfaabi_dbg_ctx2 );
-	//TEMP hack to find a bug
-	if(this_processor != mainProcessor) {
-		if(ready_queue.head == mainThread) {
-			unlock( ready_queue_lock );
-			return NULL;
-		}
-	}
-
 	thread_desc * head = pop_head( ready_queue );
 	unlock( ready_queue_lock );
@@ -584,5 +577,5 @@
 	// 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->runner){};
 	^(mainProcessor){};
 
Index: src/libcfa/concurrency/kernel_private.h
===================================================================
--- src/libcfa/concurrency/kernel_private.h	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/libcfa/concurrency/kernel_private.h	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -52,8 +52,4 @@
 //-----------------------------------------------------------------------------
 // Processor
-coroutine processorCtx_t {
-	processor * proc;
-};
-
 void main(processorCtx_t *);
 void start(processor * this);
Index: src/tests/.expect/literals.x64.txt
===================================================================
--- src/tests/.expect/literals.x64.txt	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/.expect/literals.x64.txt	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -522,4 +522,28 @@
 signed int __main__Fi___1(){
     __attribute__ ((unused)) signed int ___retval_main__i_1;
+    ((void)0b01101011);
+    ((void)0b01101011u);
+    ((void)0b01101011l);
+    ((void)0b01101011ll);
+    ((void)0b01101011ul);
+    ((void)0b01101011lu);
+    ((void)0b01101011ull);
+    ((void)0b01101011llu);
+    ((void)(+0b01101011));
+    ((void)(+0b01101011u));
+    ((void)(+0b01101011l));
+    ((void)(+0b01101011ll));
+    ((void)(+0b01101011ul));
+    ((void)(+0b01101011lu));
+    ((void)(+0b01101011ull));
+    ((void)(+0b01101011llu));
+    ((void)(-0b01101011));
+    ((void)(-0b01101011u));
+    ((void)(-0b01101011l));
+    ((void)(-0b01101011ll));
+    ((void)(-0b01101011ul));
+    ((void)(-0b01101011lu));
+    ((void)(-0b01101011ull));
+    ((void)(-0b01101011llu));
     ((void)01234567);
     ((void)01234567u);
@@ -1017,4 +1041,34 @@
     ((void)(-0X0123456789.0123456789P-09F));
     ((void)(-0X0123456789.0123456789P-09L));
+    ((void)((signed char )0b01101011));
+    ((void)((signed short int )0b01101011));
+    ((void)((signed int )0b01101011));
+    ((void)((signed long int )0b01101011));
+    ((void)((__int128 )0b01101011));
+    ((void)((unsigned char )0b01101011u));
+    ((void)((signed short int )0b01101011u));
+    ((void)((unsigned int )0b01101011u));
+    ((void)((signed long int )0b01101011u));
+    ((void)((__int128 )0b01101011u));
+    ((void)(+((signed int )((signed char )0b01101011))));
+    ((void)(+((signed int )((signed short int )0b01101011))));
+    ((void)(+((signed int )0b01101011)));
+    ((void)(+((signed long int )0b01101011)));
+    ((void)(+((float )((__int128 )0b01101011))));
+    ((void)(+((signed int )((unsigned char )0b01101011u))));
+    ((void)(+((signed int )((signed short int )0b01101011u))));
+    ((void)(+((unsigned int )0b01101011u)));
+    ((void)(+((signed long int )0b01101011u)));
+    ((void)(+((float )((__int128 )0b01101011u))));
+    ((void)(-((signed int )((signed char )0b01101011))));
+    ((void)(-((signed int )((signed short int )0b01101011))));
+    ((void)(-((signed int )0b01101011)));
+    ((void)(-((signed long int )0b01101011)));
+    ((void)(-((float )((__int128 )0b01101011))));
+    ((void)(-((signed int )((unsigned char )0b01101011u))));
+    ((void)(-((signed int )((signed short int )0b01101011u))));
+    ((void)(-((unsigned int )0b01101011u)));
+    ((void)(-((signed long int )0b01101011u)));
+    ((void)(-((float )((__int128 )0b01101011u))));
     ((void)((signed char )01234567));
     ((void)((signed short int )01234567));
Index: src/tests/.expect/literals.x86.txt
===================================================================
--- src/tests/.expect/literals.x86.txt	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/.expect/literals.x86.txt	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -522,4 +522,28 @@
 signed int __main__Fi___1(){
     __attribute__ ((unused)) signed int ___retval_main__i_1;
+    ((void)0b01101011);
+    ((void)0b01101011u);
+    ((void)0b01101011l);
+    ((void)0b01101011ll);
+    ((void)0b01101011ul);
+    ((void)0b01101011lu);
+    ((void)0b01101011ull);
+    ((void)0b01101011llu);
+    ((void)(+0b01101011));
+    ((void)(+0b01101011u));
+    ((void)(+0b01101011l));
+    ((void)(+0b01101011ll));
+    ((void)(+0b01101011ul));
+    ((void)(+0b01101011lu));
+    ((void)(+0b01101011ull));
+    ((void)(+0b01101011llu));
+    ((void)(-0b01101011));
+    ((void)(-0b01101011u));
+    ((void)(-0b01101011l));
+    ((void)(-0b01101011ll));
+    ((void)(-0b01101011ul));
+    ((void)(-0b01101011lu));
+    ((void)(-0b01101011ull));
+    ((void)(-0b01101011llu));
     ((void)01234567);
     ((void)01234567u);
@@ -1017,4 +1041,34 @@
     ((void)(-0X0123456789.0123456789P-09F));
     ((void)(-0X0123456789.0123456789P-09L));
+    ((void)((signed char )0b01101011));
+    ((void)((signed short int )0b01101011));
+    ((void)((signed int )0b01101011));
+    ((void)((signed long long int )0b01101011));
+    ((void)((__int128 )0b01101011));
+    ((void)((unsigned char )0b01101011u));
+    ((void)((signed short int )0b01101011u));
+    ((void)((unsigned int )0b01101011u));
+    ((void)((signed long long int )0b01101011u));
+    ((void)((__int128 )0b01101011u));
+    ((void)(+((signed int )((signed char )0b01101011))));
+    ((void)(+((signed int )((signed short int )0b01101011))));
+    ((void)(+((signed int )0b01101011)));
+    ((void)(+((signed long long int )0b01101011)));
+    ((void)(+((float )((__int128 )0b01101011))));
+    ((void)(+((signed int )((unsigned char )0b01101011u))));
+    ((void)(+((signed int )((signed short int )0b01101011u))));
+    ((void)(+((unsigned int )0b01101011u)));
+    ((void)(+((signed long long int )0b01101011u)));
+    ((void)(+((float )((__int128 )0b01101011u))));
+    ((void)(-((signed int )((signed char )0b01101011))));
+    ((void)(-((signed int )((signed short int )0b01101011))));
+    ((void)(-((signed int )0b01101011)));
+    ((void)(-((signed long long int )0b01101011)));
+    ((void)(-((float )((__int128 )0b01101011))));
+    ((void)(-((signed int )((unsigned char )0b01101011u))));
+    ((void)(-((signed int )((signed short int )0b01101011u))));
+    ((void)(-((unsigned int )0b01101011u)));
+    ((void)(-((signed long long int )0b01101011u)));
+    ((void)(-((float )((__int128 )0b01101011u))));
     ((void)((signed char )01234567));
     ((void)((signed short int )01234567));
Index: src/tests/.expect/user_literals.txt
===================================================================
--- src/tests/.expect/user_literals.txt	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/.expect/user_literals.txt	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -1,8 +1,9 @@
 11.0714285714286
-11.07225
+15
 11.0714285714286
+24.8
+11.248
 11.0714285714286
-11.0714285714286
-22.0457142857143
+28.0657142857143
 secs 1
 secs 23
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/Makefile.am	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -123,5 +123,5 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
 
+# Warnings
 warnings/self-assignment: warnings/self-assignment.c @CFA_BINDIR@/@CFA_NAME@
-	${CC} ${AM_CFLAGS} ${CFLAGS} ${<} -o ${@}
-	echo > ${@}
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${<} 2> ${@} -fsyntax-only
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/Makefile.in	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -800,7 +800,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
 
+# Warnings
 warnings/self-assignment: warnings/self-assignment.c @CFA_BINDIR@/@CFA_NAME@
-	${CC} ${AM_CFLAGS} ${CFLAGS} ${<} -o ${@}
-	echo > ${@}
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${<} 2> ${@} -fsyntax-only
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: src/tests/literals.c
===================================================================
--- src/tests/literals.c	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/literals.c	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  9 16:34:38 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Sep 25 20:26:00 2017
-// Update Count     : 132
+// Last Modified On : Sun Mar  4 10:41:31 2018
+// Update Count     : 134
 // 
 
@@ -31,4 +31,9 @@
 // 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;
@@ -148,4 +153,9 @@
 #ifdef __CFA__
 // fixed-size length
+
+	// binary
+	 0b01101011_l8;   0b01101011_l16;   0b01101011_l32;   0b01101011_l64;   0b01101011_l128;   0b01101011_l8u;   0b01101011_ul16;   0b01101011_l32u;   0b01101011_ul64;   0b01101011_ul128;
+	+0b01101011_l8;  +0b01101011_l16;  +0b01101011_l32;  +0b01101011_l64;  +0b01101011_l128;  +0b01101011_l8u;  +0b01101011_ul16;  +0b01101011_l32u;  +0b01101011_ul64;  +0b01101011_ul128;
+	-0b01101011_l8;  -0b01101011_l16;  -0b01101011_l32;  -0b01101011_l64;  -0b01101011_l128;  -0b01101011_l8u;  -0b01101011_ul16;  -0b01101011_l32u;  -0b01101011_ul64;  -0b01101011_ul128;
 
 	// octal
Index: src/tests/user_literals.c
===================================================================
--- src/tests/user_literals.c	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/user_literals.c	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -10,6 +10,6 @@
 // Created On       : Wed Sep  6 21:40:50 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 09:12:36 2017
-// Update Count     : 50
+// Last Modified On : Sun Mar  4 11:14:02 2018
+// Update Count     : 52
 // 
 
@@ -31,30 +31,31 @@
 
 
-struct Weight {
-	double stones;
-};
-void ?{}( Weight & w ) { w.stones = 0; }				// operations
+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 }; }
+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.1575}; }
-
+Weight ?`kg( double w ) { return (Weight) { w * 0.16 }; }
 
 int main() {
-	Weight w, hw = { 14 };								// 14 stone
-	w = 11`st + 1`lb;
+	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 = 155`lb;
+	w = 11`st + 1`lb;
 	sout | w | endl;
-	w = 0x_9b_u`lb;										// hexadecimal unsigned weight (155)
-	sout | w | endl;
-	w = 0_233`lb;										// octal weight (155)
-	sout | w | endl;
-	w = 5`st + 8`kg + 25`lb + hw;
+	w = 5`st + 8`kg + 25`lb + heavy;
 	sout | w | endl;
 
Index: src/tests/warnings/.expect/self-assignment.txt
===================================================================
--- src/tests/warnings/.expect/self-assignment.txt	(revision 661214c6b8b7c19f5f12c7aea985fe5e265c5ab1)
+++ src/tests/warnings/.expect/self-assignment.txt	(revision fb11446ea727a6aa8117f8ef7d17b3ad38f1b41c)
@@ -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
