Roberto Bagnara wrote:
Reading the thread "Autoconf manual's coverage of signed integer overflow & portability" I was horrified to discover about GCC's miscompilation of the remainder expression that causes INT_MIN % -1 to cause a SIGFPE on CPUs of the i386 family. Are there plans to fix this bug (which, to me, looks quite serious)? All the best,
This problem is quite rare in practice (otherwise there would be much more complaining). As such it may be too expensive, performance-wise, to fix in GCC. It seems as one of those classical things that can be worked-around in the kernel. Once the kernel sees the FP trap (whatever its i368 name is), it decodes the machine code and finds: idivl (%ecx). As far as I remember, this will put the result in two registers one for div_res and one for mod_res. Since MIN_INT/-1 is undefined, the kernel may put MIN_INT in div_res, and mod_res=1. Then return to the following instruction. Should I open a request for the kernel? -- Michael Veksler http:///tx.technion.ac.il/~mveksler