------- Comment #3 from aleksey dot shipilev at gmail dot com 2008-01-08 19:47 ------- Sorry, Andrew, but result=-1 shows that ioctl failed to read enough data from the device (maybe your device does not support SMART?). I tried to get rid of any of such hardware-specific code, but can't eliminate that ioctl(). Sorry again.
I still think that this is GCC bug, since compiler generates correct code in mode A and fails to do that in mode B. It's weird again that A + (B-A) != B, so it looks like general problem. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34716