Semicolon in msvc __asm block means start of the comment, and not end of
the __asm statement, like it is for all other C statements. Also function
which uses msvc inline assembly cannot be inlined to another function
(compiler reports a warning about it, not a fatal error). So add explicit
curly brackets for __asm block, remove misleading semicolons and do not
declare function as inline.
#elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || (__GNUC__ > 4))
#include <x86intrin.h>
#elif defined(_MSC_VER) && defined(_M_IX86)
-static inline unsigned int
+static unsigned int
__readeflags(void)
{
- __asm pushfd;
- __asm pop eax;
+ __asm {
+ pushfd
+ pop eax
+ }
}
#elif defined(__GNUC__)
static inline unsigned