4 ms·
As a student, 20 years ago, I felt like I was going crazy when using SDCC for pic16. Being new to microcontrollers and C, SDCC seemed cursed - even simple 'blin
by raphman 7d ago
As a student, 20 years ago, I felt like I was going crazy when using SDCC for pic16. Being new to microcontrollers and C, SDCC seemed cursed - even simple 'blink LED' test cases pseudo-randomly worked or didn't. It turned out that the compiler optimized away some 'empty' loops a little bit too aggressively without realizing that these loops were setting output pins. These bugs have long been fixed but still live on in my long-term memory.
- technothrasher 7d agoI still run across this to this day with GCC and Cortex-M code. The optimizer will occasionally decide to blow away loops that are clearly doing something.
- uecker 7d agoPlease file a bug report, if you haven't done so.
- lelanthran 7d ago> that the compiler optimized away some 'empty' loops a little bit too aggressively without realizing that these loops were setting output pins. Doesn't sounds like a bug in the compiler, sounds more like `volatile` was not used (unless, of course, `volatile` was not being honoured).
- raphman 7d agoMight be. There certainly were bugs in my understanding of micro-controllers and compilers at the time... EDIT: but SDCC indeed ignored 'volatile': https://sourceforge.net/p/sdcc/bugs/436/ https://sourceforge.net/p/sdcc/bugs/436/