aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2023-03-19 18:34:38 +0100
committerThomas Koenig <tkoenig@gcc.gnu.org>2023-03-19 18:34:38 +0100
commit655689f6be8606991f8a3359eadf017af7238a88 (patch)
tree81577af9f9fd3b548d53dcd380590ecd00e748ac /gcc
parent14361c5a4696ad4e4635aa439173bfc0a2c19060 (diff)
downloadgcc-655689f6be8606991f8a3359eadf017af7238a88.zip
gcc-655689f6be8606991f8a3359eadf017af7238a88.tar.gz
gcc-655689f6be8606991f8a3359eadf017af7238a88.tar.bz2
Mention undefined behavior on integer overflow.
gcc/fortran/ChangeLog: * gfortran.texi: Mention behavior on overflow.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/gfortran.texi18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index c483e13..b967129 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -820,6 +820,7 @@ might in some way or another become visible to the programmer.
* File operations on symbolic links::
* File format of unformatted sequential files::
* Asynchronous I/O::
+* Behavior on integer overflow::
@end menu
@@ -1160,6 +1161,23 @@ sytems, such as Linux, it is necessary to specify @option{-pthread},
@c Maybe this chapter should be merged with the 'Standards' section,
@c whenever that is written :-)
+@node Behavior on integer overflow
+@section Behavior on integer overflow
+@cindex integer overflow
+@cindex overflow handling
+
+Integer overflow is prohibited by the Fortran standard. The behavior
+of gfortran on integer overflow is undefined by default. Traditional
+code, like linear congruential pseudo-random number generators in old
+programs that rely on specific, non-standard behavior may generate
+unexpected results. The @option{-fsanitize=undefined} option can be
+used to detect such code at runtime.
+
+It is recommended to use the intrinsic subroutine @code{RANDOM_NUMBER}
+for random number generators or, if the old behavior is desired, to
+use the @option{-fwrapv} option. Note that this option can impact
+performance.
+
@node Extensions
@chapter Extensions
@cindex extensions