Message170985
| Author |
skrah |
| Recipients |
brian.curtin, loewis, nadeem.vawda, skrah, vstinner |
| Date |
2012年09月22日.11:09:28 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1348312169.14.0.11436421539.issue15993@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
> Given all the problems, I'll stop using PGO on all branches and
> as the compiler apparently generates bad code.
That is probably the best solution.
The problem in memoryview.c:pack_single() is that Visual Studio optimizes the
memcpy() to mov instructions, but exchanges the low and high dwords:
unsigned __int64 llu = 1;
do { unsigned __int64 x;
x = (unsigned __int64)llu;
// At this point x=llu is in edx=1 and ecx=0.
// The memcpy() is optimized to:
// mov dword ptr [esi], ecx
// mov dword ptr [esi+4], edx
memcpy(ptr, (char *)&x, sizeof x);
} while (0); |
|