2 A bug resulting in overlapping spill locations in temporary variables.
8 #pragma disable_warning 85
14 typedef uint16_t cv_vmemp
;
16 #define TILE_SITE0 224
47 inline cv_vmemp
tile_at(uint_fast8_t x
, uint_fast8_t y
)
52 uint_fast8_t free_workers
;
55 void cvu_voutb(const uint8_t value
, const cv_vmemp dest
)
58 ASSERT(dest
== tile_at(0, 1) || dest
== tile_at(1, 1) || dest
== tile_at(0, 2) || dest
== tile_at(1, 2));
63 free_workers
= workers
;
64 for(struct site
*s
= sites
; s
< sites
+ 1; s
++)
72 if(s
->tool
== UINT8_MAX
)
81 uint_fast8_t progress
= s
->built
/ 32;
82 bool big
= (s
->tool
>= TOOL_RAIL_LU
);
84 cvu_voutb(TILE_SITE0
+ progress
, tile_at(x
, y
));
87 cvu_voutb(TILE_SITE0
+ progress
, tile_at(x
+ 1, y
));
88 cvu_voutb(TILE_SITE0
+ progress
, tile_at(x
, y
+ 1));
89 cvu_voutb(TILE_SITE0
+ progress
, tile_at(x
+ 1, y
+ 1));
101 sites
[0].tool
= TOOL_NODE
;
107 extern cv_vmemp
tile_at(uint_fast8_t x
, uint_fast8_t y
);