diff --git a/contrib/mklog.py b/contrib/mklog.py
index 1604f0516d0834e73fcf9c53f5d6e635869fefdc..5c93c70712831d6be039e1ccff487593e8f59b16 100755
--- a/contrib/mklog.py
+++ b/contrib/mklog.py
@@ -169,13 +169,19 @@ def generate_changelog(data, no_functions=False, fill_pr_titles=False):
     if fill_pr_titles:
         out += get_pr_titles(prs)
 
+    # print list of PR entries before ChangeLog entries
+    if prs:
+        if not out:
+            out += '\n'
+        for pr in prs:
+            out += '\t%s\n' % pr
+        out += '\n'
+
     # sort ChangeLog so that 'testsuite' is at the end
     for changelog in sorted(changelog_list, key=lambda x: 'testsuite' in x):
         files = changelogs[changelog]
         out += '%s:\n' % os.path.join(changelog, 'ChangeLog')
         out += '\n'
-        for pr in prs:
-            out += '\t%s\n' % pr
         # new and deleted files should be at the end
         for file in sorted(files, key=sort_changelog_files):
             assert file.path.startswith(changelog)
diff --git a/contrib/test_mklog.py b/contrib/test_mklog.py
index 7e95ec1a2ab539a32fc701866d81273eff97f5c0..a0670dac119f919b87efcdacae904897f1e65cd3 100755
--- a/contrib/test_mklog.py
+++ b/contrib/test_mklog.py
@@ -317,9 +317,10 @@ index 00000000000..dcc8999c446
 EXPECTED5 = '''\
 PR target/95046 - Vectorize V2SFmode operations
 
+	PR target/95046
+
 gcc/testsuite/ChangeLog:
 
-	PR target/95046
 	* gcc.target/i386/pr95046-6.c: New test.
 
 '''
@@ -377,9 +378,11 @@ index 00000000000..f3d6d11e61e
 '''
 
 EXPECTED7 = '''\
-gcc/testsuite/ChangeLog:
 
 	DR 2237
+
+gcc/testsuite/ChangeLog:
+
 	* g++.dg/DRs/dr2237.C: New test.
 
 '''