Index: tools/build/v2/engine/lists.c =================================================================== --- tools/build/v2/engine/lists.c (revision 83162) +++ tools/build/v2/engine/lists.c (working copy) @@ -14,9 +14,9 @@ #include -struct freelist_node { struct freelist_node * next; }; +union freelist_node { union freelist_node * next; LIST allow_aliasing; }; -static struct freelist_node * freelist[ 32 ]; /* junkpile for list_dealloc() */ +static union freelist_node * freelist[ 32 ]; /* junkpile for list_dealloc() */ static unsigned get_bucket( unsigned size ) { @@ -30,7 +30,7 @@ unsigned const bucket = get_bucket( size ); if ( freelist[ bucket ] ) { - struct freelist_node * result = freelist[ bucket ]; + union freelist_node * result = freelist[ bucket ]; freelist[ bucket ] = result->next; return (LIST *)result; } @@ -42,7 +42,7 @@ { unsigned size = list_length( l ); unsigned bucket; - struct freelist_node * node = (struct freelist_node *)l; + union freelist_node * node = (union freelist_node *)l; if ( size == 0 ) return; @@ -372,10 +372,10 @@ int i; for ( i = 0; i < sizeof( freelist ) / sizeof( freelist[ 0 ] ); ++i ) { - struct freelist_node * l = freelist[ i ]; + union freelist_node * l = freelist[ i ]; while ( l ) { - struct freelist_node * const tmp = l; + union freelist_node * const tmp = l; l = l->next; BJAM_FREE( tmp ); }