// layer2Stress.c - Layer 2 ptr32 deref miscompile reproducer. // // Verifies that *_StackRelIndY uses (the Layer 2 deref pseudo) survive // W65816StackRelToImg's hot-slot promotion. Each helper writes its // result to a known address; runInMame.sh --check verifies all four. #include __attribute__((noinline)) uint16_t indexedRead(const uint16_t *arr, uint16_t i) { return arr[i]; } __attribute__((noinline)) uint16_t strLen(const char *p) { uint16_t n = 0; while (*p) { p++; n++; } return n; } __attribute__((noinline)) uint16_t sumByteToZero(const uint8_t *p) { uint16_t s = 0; while (*p) { s += *p; p++; } return s; } static const uint16_t gArr[] = { 100, 200, 300, 400, 500 }; static const uint8_t gBytes[] = { 10, 20, 30, 40, 50, 0 }; static const char gString[] = "Hello, world!"; int main(void) { *(volatile uint16_t *)0x70 = strLen(gString); *(volatile uint16_t *)0x72 = sumByteToZero(gBytes); *(volatile uint16_t *)0x74 = indexedRead(gArr, 3); *(volatile uint16_t *)0x76 = 0xBEEF; for (volatile uint32_t s = 0; s < 200000UL; s++) { } return 0; }