Now that Jeremy is asking about this code, it looks really bogus to me,
so let's rip it out.  The constructor for SyntaxError does the right
thing, so we do not need to do it again.
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 40611b6..7d73395 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1096,24 +1096,6 @@
 	w = Py_BuildValue("(sO)", msg, v);
 	PyErr_SetObject(errtype, w);
 	Py_XDECREF(w);
-
-	if (v != NULL) {
-		PyObject *exc, *tb;
-
-		PyErr_Fetch(&errtype, &exc, &tb);
-		PyErr_NormalizeException(&errtype, &exc, &tb);
-		if (PyObject_SetAttrString(exc, "filename",
-					   PyTuple_GET_ITEM(v, 0)))
-			PyErr_Clear();
-		if (PyObject_SetAttrString(exc, "lineno",
-					   PyTuple_GET_ITEM(v, 1)))
-			PyErr_Clear();
-		if (PyObject_SetAttrString(exc, "offset",
-					   PyTuple_GET_ITEM(v, 2)))
-			PyErr_Clear();
-		Py_DECREF(v);
-		PyErr_Restore(errtype, exc, tb);
-	}
 }
 
 /* Print fatal error message and abort */