Skip to content

Commit

Permalink
spec: mention that special case for integer division is due to overflow
Browse files Browse the repository at this point in the history
Fixes golang#23443.

Change-Id: If60c39b582ee5308e9fa902f93c1b6ae7890346c
Reviewed-on: https://go-review.googlesource.com/87975
Reviewed-by: Ian Lance Taylor <[email protected]>
Reviewed-by: Rob Pike <[email protected]>
  • Loading branch information
griesemer committed Jan 17, 2018
1 parent 2dc025e commit 18d527b
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions doc/go_spec.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!--{
"Title": "The Go Programming Language Specification",
"Subtitle": "Version of January 11, 2018",
"Subtitle": "Version of January 17, 2018",
"Path": "/ref/spec"
}-->

Expand Down Expand Up @@ -3558,9 +3558,10 @@ <h4 id="Integer_operators">Integer operators</h4>
</pre>

<p>
As an exception to this rule, if the dividend <code>x</code> is the most
negative value for the int type of <code>x</code>, the quotient
<code>q = x / -1</code> is equal to <code>x</code> (and <code>r = 0</code>).
The one exception to this rule is that if the dividend <code>x</code> is
the most negative value for the int type of <code>x</code>, the quotient
<code>q = x / -1</code> is equal to <code>x</code> (and <code>r = 0</code>)
due to two's-complement <a href="#Integer_overflow">integer overflow</a>:
</p>

<pre>
Expand Down Expand Up @@ -3623,11 +3624,11 @@ <h4 id="Integer_overflow">Integer overflow</h4>
</p>
<p>
For signed integers, the operations <code>+</code>,
<code>-</code>, <code>*</code>, and <code>&lt;&lt;</code> may legally
<code>-</code>, <code>*</code>, <code>/</code>, and <code>&lt;&lt;</code> may legally
overflow and the resulting value exists and is deterministically defined
by the signed integer representation, the operation, and its operands.
No exception is raised as a result of overflow. A
compiler may not optimize code under the assumption that overflow does
No exception is raised as a result of overflow.
A compiler may not optimize code under the assumption that overflow does
not occur. For instance, it may not assume that <code>x &lt; x + 1</code> is always true.
</p>

Expand Down

0 comments on commit 18d527b

Please sign in to comment.