diff mbox series

[wwwdocs] Mention random number generators in porting_to.html

Message ID a0c911ee-4587-10d6-3c75-74538e7623be@netcologne.de
State New
Headers show
Series [wwwdocs] Mention random number generators in porting_to.html | expand

Commit Message

Thomas Koenig March 18, 2023, 6:23 p.m. UTC
Hi,

Text says it all.  OK for web pages?

Best regards

	Thomas

Mention issues with integer owerflow for random number generators.

This mentions the issues with integer overflow and how to work
around them.

Comments

Harald Anlauf March 18, 2023, 9:11 p.m. UTC | #1
Hi Thomas,

Am 18.03.23 um 19:23 schrieb Thomas Koenig via Gcc-patches:
> Hi,
> 
> Text says it all.  OK for web pages?
> 
> Best regards
> 
>      Thomas
> 
> Mention issues with integer owerflow for random number generators.
> 
> This mentions the issues with integer overflow and how to work
> around them.

it's basically fine, although I'd prefer a formulation replacing

+ <p> GCC 13 includes new optimizations which expose reliance on
+  non-standard behavior for integer overflow, which was often used
+  for linear congruential pseudo-random number generators in old
+  programs.  It is recommended to use the intrinsic

by something like:

GCC 13 includes new optimizations which may change behavior on
integer overflow.  Traditional code, like linear congruential
pseudo-random number generators in old programs and relying on a
specific, non-standard behavior may now generate unexpected results.
In such cases it is recommended to use the intrinsic ...


Thanks for updating the documentation!

Harald
diff mbox series

Patch

diff --git a/htdocs/gcc-13/porting_to.html b/htdocs/gcc-13/porting_to.html
index 0ee58802..7d733b16 100644
--- a/htdocs/gcc-13/porting_to.html
+++ b/htdocs/gcc-13/porting_to.html
@@ -203,11 +203,20 @@  class Alloc
 <p>
 Since C++20, there is no <code>rebind</code> member in
 <code>std::allocator</code>, so deriving your own allocator types from
-<code>std::allocator</code> is simpler and doesn't require the derived
+<code>std::allocator</code> is simpler and does not require the derived
 allocator to provide its own <code>rebind</code>.
 For compatibility with previous C++ standards, the member should still be
 provided. The converting constructor is still required even in C++20.
 </p>
 
+<h2 id="fortran">Fortran language issues</h2>
+<h3 id="overflow">Behavior on integer overflow</h3>
+<p> GCC 13 includes new optimizations which expose reliance on
+  non-standard behavior for integer overflow, which was often used
+  for linear congruential pseudo-random number generators in old
+  programs.  It is recommended to use the intrinsic
+  subroutine <code>RANDOM_NUMBER</code> for random number generators
+  or, if the old behavior is desired, to use the <code>-fwrapv</code>
+  option.  Note that this option can impact performance.
 </body>
 </html>