[Python-checkins] cpython (3.2): Issue #8847: Disable COMDAT folding in Windows PGO builds.

martin.v.loewis python-checkins at python.org
Wed Aug 1 11:11:10 CEST 2012


http://hg.python.org/cpython/rev/2638ce032151
changeset:   78366:2638ce032151
branch:      3.2
parent:      78348:47536beb7453
user:        Martin v. Löwis <martin at v.loewis.de>
date:        Wed Aug 01 10:32:11 2012 +0200
summary:
  Issue #8847: Disable COMDAT folding in Windows PGO builds.
Analysis by Victor Stinner. Patch by Stefan Krah.

files:
  Lib/test/test_list.py        |  8 ++++++++
  Lib/test/test_tuple.py       |  8 ++++++++
  Misc/NEWS                    |  2 ++
  PCbuild/pginstrument.vsprops |  2 +-
  4 files changed, 19 insertions(+), 1 deletions(-)


diff --git a/Lib/test/test_list.py b/Lib/test/test_list.py
--- a/Lib/test/test_list.py
+++ b/Lib/test/test_list.py
@@ -70,6 +70,14 @@
         check(1000000)
 
 
+    def test_no_comdat_folding(self):
+        # Issue 8847: In the PGO build, the MSVC linker's COMDAT folding
+        # optimization causes failures in code that relies on distinct
+        # function addresses.
+        class L(list): pass
+        with self.assertRaises(TypeError):
+            (3,) + L([1,2])
+
 def test_main(verbose=None):
     support.run_unittest(ListTest)
 
diff --git a/Lib/test/test_tuple.py b/Lib/test/test_tuple.py
--- a/Lib/test/test_tuple.py
+++ b/Lib/test/test_tuple.py
@@ -164,6 +164,14 @@
         check(10)       # check our checking code
         check(1000000)
 
+    def test_no_comdat_folding(self):
+        # Issue 8847: In the PGO build, the MSVC linker's COMDAT folding
+        # optimization causes failures in code that relies on distinct
+        # function addresses.
+        class T(tuple): pass
+        with self.assertRaises(TypeError):
+            [3,] + T((1,2))
+
 def test_main():
     support.run_unittest(TupleTest)
 
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -425,6 +425,8 @@
 Build
 -----
 
+- Issue #8847: Disable COMDAT folding in Windows PGO builds.
+
 - Issue #14197: For OS X framework builds, ensure links to the shared
   library are created with the proper ABI suffix.
 
diff --git a/PCbuild/pginstrument.vsprops b/PCbuild/pginstrument.vsprops
--- a/PCbuild/pginstrument.vsprops
+++ b/PCbuild/pginstrument.vsprops
@@ -22,7 +22,7 @@
 	<Tool
 		Name="VCLinkerTool"
 		OptimizeReferences="2"
-		EnableCOMDATFolding="2"
+		EnableCOMDATFolding="1"
 		LinkTimeCodeGeneration="2"
 		ProfileGuidedDatabase="$(SolutionDir)$(PlatformName)-pgi\$(TargetName).pgd"
 		ImportLibrary="$(OutDirPGI)\$(TargetName).lib"

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list