fix silent eax clobbering in CpuId ctor
authorPhilip Pronin <philipp@fb.com>
Thu, 27 Apr 2017 17:06:51 +0000 (10:06 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 27 Apr 2017 17:21:35 +0000 (10:21 -0700)
commit95209f9d06df94908db7dbf5a4067eca11b9da59
treeea3c478a4b862d8d3e3821116a4519f8f82c008d
parentaf5ed37b6f4898842d55e7db80e74ba845d00393
fix silent eax clobbering in CpuId ctor

Summary:
`cpuid` uses all of `eax`, `ebx`, `ecx`, `edx` for output, but we
aren't providing such information to GCC in a couple of cases, which might
result in incorrect code being produced;

GCC (unlike clang) doesn't allow the same register to appear both in input and
clobber list, so put `eax` into output list where required.

Reviewed By: ot, lbrandy

Differential Revision: D4961841

fbshipit-source-id: 07ca1977373496bfd794d3b0c8a4ba21333820e4
folly/CpuId.h