added builtin b/w compat module.
changed testing of exec.
diff --git a/Lib/builtin.py b/Lib/builtin.py
new file mode 100755
index 0000000..710d825
--- /dev/null
+++ b/Lib/builtin.py
@@ -0,0 +1,3 @@
+# B/W compat hack so code that says "import builtin" won't break after
+# name change from builtin to __builtin__.
+from __builtin__ import *
diff --git a/Lib/test/test_b1.py b/Lib/test/test_b1.py
index e5611e5..c258fd7 100644
--- a/Lib/test/test_b1.py
+++ b/Lib/test/test_b1.py
@@ -25,7 +25,7 @@
 		raise TestFailed, 'f2 called with ' + `a1, a2`
 def f3(a1, a2, a3):
 	if a1 != 1 or a2 != 2 or a3 != 3:
-		raise TestFailed, 'f2 called with ' + `a1, a2, a3`
+		raise TestFailed, 'f3 called with ' + `a1, a2, a3`
 apply(f0, ())
 apply(f1, (1,))
 apply(f2, (1, 2))
@@ -81,14 +81,6 @@
 if eval('1+1') <> 2: raise TestFailed, 'eval(\'1+1\')'
 if eval(' 1+1\n') <> 2: raise TestFailed, 'eval(\' 1+1\\n\')'
 
-print 'exec'
-z = 0
-exec('z=1+1\n')
-if z <> 2: raise TestFailed, 'exec(\'z=1+1\'\\n)'
-z = 0
-exec('z=1+1')
-if z <> 2: raise TestFailed, 'exec(\'z=1+1\')'
-
 print 'execfile'
 z = 0
 f = open(TESTFN, 'w')
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 56fb14f..f07f75b 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -97,7 +97,7 @@
 print 'simple_stmt'
 x = 1; pass; del x
 
-### small_stmt: expr_stmt | print_stmt  | pass_stmt | del_stmt | flow_stmt | import_stmt
+### small_stmt: expr_stmt | print_stmt  | pass_stmt | del_stmt | flow_stmt | import_stmt | global_stmt | access_stmt | exec_stmt
 # Tested below
 
 print 'expr_stmt' # (exprlist '=')* exprlist
@@ -165,6 +165,25 @@
 	global a, b
 	global one, two, three, four, five, six, seven, eight, nine, ten
 
+print 'exec_stmt' # 'exec' expr ['in' expr [',' expr]]
+def f():
+	z = None
+	del z
+	exec 'z=1+1\n'
+	if z <> 2: raise TestFailed, 'exec \'z=1+1\'\\n'
+	del z
+	exec 'z=1+1'
+	if z <> 2: raise TestFailed, 'exec \'z=1+1\''
+f()
+g = {}
+exec 'z = 1' in g
+if g <> {'z': 1}: raise TestFailed, 'exec \'z = 1\' in g'
+g = {}
+l = {}
+exec 'global a; a = 1; b = 2' in g, l
+if (g, l) <> ({'a':1}, {'b':2}): raise TestFailed, 'exec ... in g, l'
+
+
 ### compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
 # Tested below
 
diff --git a/Lib/test/testall.out b/Lib/test/testall.out
index a711ba2..e1ee9da 100644
--- a/Lib/test/testall.out
+++ b/Lib/test/testall.out
@@ -35,6 +35,7 @@
 [5]
 [6]
 global_stmt
+exec_stmt
 if_stmt
 while_stmt
 for_stmt
@@ -71,7 +72,6 @@
 dir
 divmod
 eval
-exec
 execfile
 float
 getattr