Issue #20440: Cleaning up the code by using Py_SETREF.
diff --git a/Python/import.c b/Python/import.c
index 8d7bfe9..325b936 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -879,10 +879,8 @@
     if (PyUnicode_Compare(co->co_filename, oldname))
         return;
 
-    tmp = co->co_filename;
-    co->co_filename = newname;
-    Py_INCREF(co->co_filename);
-    Py_DECREF(tmp);
+    Py_INCREF(newname);
+    Py_SETREF(co->co_filename, newname);
 
     constants = co->co_consts;
     n = PyTuple_GET_SIZE(constants);
@@ -1327,10 +1325,8 @@
             (always_trim ||
              PyUnicode_CompareWithASCIIString(code->co_name,
                                               remove_frames) == 0)) {
-            PyObject *tmp = *outer_link;
-            *outer_link = next;
             Py_XINCREF(next);
-            Py_DECREF(tmp);
+            Py_SETREF(*outer_link, next);
             prev_link = outer_link;
         }
         else {
diff --git a/Python/peephole.c b/Python/peephole.c
index 59ad3b7..4bf786e 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -118,9 +118,7 @@
     /* If it's a BUILD_SET, use the PyTuple we just built to create a
       PyFrozenSet, and use that as the constant instead: */
     if (codestr[0] == BUILD_SET) {
-        PyObject *tuple = newconst;
-        newconst = PyFrozenSet_New(tuple);
-        Py_DECREF(tuple);
+        Py_SETREF(newconst, PyFrozenSet_New(newconst));
         if (newconst == NULL)
             return 0;
     }
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index f784f75..53dd4a1 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -436,10 +436,7 @@
         return -1;
     }
     if (result != Py_None) {
-        PyObject *temp = frame->f_trace;
-        frame->f_trace = NULL;
-        Py_XDECREF(temp);
-        frame->f_trace = result;
+        Py_SETREF(frame->f_trace, result);
     }
     else {
         Py_DECREF(result);