]> git.ipfire.org Git - thirdparty/gcc.git/commit
flags.h (flag_wrapv): New flag controlling overflow semantics.
authorRoger Sayle <roger@eyesopen.com>
Sat, 31 May 2003 13:23:32 +0000 (13:23 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Sat, 31 May 2003 13:23:32 +0000 (13:23 +0000)
commit4fa26a60791ec314128a9683fd4d657b251d0268
treeae8dcbb261aaadbfa874d60f1fccd8dd93248b50
parent82a2669ea738ba4bec4112408a16082e7356e7e1
flags.h (flag_wrapv): New flag controlling overflow semantics.

* flags.h (flag_wrapv): New flag controlling overflow semantics.
* toplev.c (flag_wrapv): Declare the variable with default false.
(lang_independent_options): New option "-fwrapv" to set the above.

* fold-const.c (extract_muldiv_1): Disable optimization of (2*x)/2
as x, when signed arithmetic overflow wraps around.
(fold): Optimize "-A - B" as "-B - A" if overflow wraps around.
* loop.c (basic_induction_var): Ignore BIVs that rely on undefined
overflow when flag_wrapv is true.

* java/lang.c (java_init_options): Prescribe wrap-around two's
complement arithmetic overflow by setting flag_wrapv.

* doc/invoke.texi: Document new -fwrapv command line option.
* doc/c-tree.texi: Mention that the overflow semantics of
NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR and MULT_EXPR is dependent
upon both flag_wrapv and flag_trapv.

* gcc.dg/fwrapv-1.c: New test case.
* gcc.dg/fwrapv-2.c: New test case.

* libjava.lang/Overflow.java: New test.
* libjava.lang/Overflow.out: New file.

From-SVN: r67270
15 files changed:
gcc/ChangeLog
gcc/doc/c-tree.texi
gcc/doc/invoke.texi
gcc/flags.h
gcc/fold-const.c
gcc/java/ChangeLog
gcc/java/lang.c
gcc/loop.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/fwrapv-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/fwrapv-2.c [new file with mode: 0644]
gcc/toplev.c
libjava/testsuite/ChangeLog
libjava/testsuite/libjava.lang/Overflow.java [new file with mode: 0644]
libjava/testsuite/libjava.lang/Overflow.out [new file with mode: 0644]