/* bug-2890326.c */ #include #include struct position { uint_fast8_t track; uint_fast8_t flags; }; #ifdef __SDCC_pdk14 // Lack of RAM #define MAX_VEHICLES 2 #else #define MAX_VEHICLES 9 #endif struct vehicle { struct position ends[2]; struct vehicle *next, *previous; }; struct vehicle vehicles[MAX_VEHICLES]; // Hangs sdcc (unless using --no-peep). void f(void) { uint_fast8_t track; track = vehicles[1].ends[0].track; if(track != 4 && track != 5 && track != 6) return; for(;;); } void testBug(void) { ASSERT(1); }