On Thu, Jul 24 at 10:36 PM, Richard Biener <richard.guent...@gmail.com> wrote: > Fact is that if somebody is interested in > -ftrapv he/she is welcome to contribute patches. Especially testing > coverage is poor.
As I said I have test programs for integer overflow (not written in C). Now I have converted one test program to C. This program checks if an int64_t overflow raises SIGABRT or SIGILL. The name of the program is chkovf64.c and I have uploaded it to http://sourceforge.net/projects/seed7/files/ It is licenced with GPL. You can use it to improve the testing coverage of gcc. When I compile it with: gcc -ftrapv chkovf64.c -o chkovf64 it writes a lot of warnings about "integer overflow in expression". Running chkovf64 shows that -ftrapv does not work correct. It seems that gcc thinks that writing a warning is enough and raising a signal at runtime is not necessary. For human programmers this makes sense, since they read the warnings and correct the code. But for generated C programs this is not the right strategy. There are different needs when C is used as intermediate language. Maybe all -ftrapv problems uncovered by chkovf64.c are because of this. Unfortunately there are also other test cases where a signal is not raised although a signed integer overflow occurred. This happens in a much bigger program and until now I was not able to create a simple test case from it. I used clang version 3.4-1 to proof that chkovf64.c works correct. When I compile it with: clang -ftrapv chkovf64.c -o chkovf64 and start chkovf64 afterwards it writes: Overflow checking of negation works correct. Overflow checking of addition works correct. Overflow checking of addition assignment works correct. Overflow checking of subtraction works correct. Overflow checking of subtraction assignment works correct. Overflow checking of incr works correct. Overflow checking of decr works correct. Overflow checking of multiplication works correct. Overflow checking of multiplication assignment works correct. Greetings Thomas Mertes -- Seed7 Homepage: http://seed7.sourceforge.net Seed7 - The extensible programming language: User defined statements and operators, abstract data types, templates without special syntax, OO with interfaces and multiple dispatch, statically typed, interpreted or compiled, portable, runs under linux/unix/windows.