Optimization to stop creating new small longs and use the
one previously stored. Issue 2417.
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index b00f736..c475878 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -805,6 +805,24 @@
             self.assertRaises(ZeroDivisionError, eval, zero, namespace)
 
 
+    def test_small_ints(self):
+        for i in range(-5, 257):
+            self.assertTrue(i is i + 0)
+            self.assertTrue(i is i * 1)
+            self.assertTrue(i is i - 0)
+            self.assertTrue(i is i // 1)
+            self.assertTrue(i is i & -1)
+            self.assertTrue(i is i | 0)
+            self.assertTrue(i is i ^ 0)
+            self.assertTrue(i is ~~i)
+            self.assertTrue(i is i**1)
+            self.assertTrue(i is int(str(i)))
+            self.assertTrue(i is i<<2>>2, str(i))
+        # corner cases
+        i = 1 << 70
+        self.assertTrue(i - i is 0)
+        self.assertTrue(0 * i is 0)
+
 def test_main():
     support.run_unittest(LongTest)