Interesting. Seems slightly strange, but I've seen stranger. I guess
it's seen as "cleaner" than forcing this into 2 statements.
IAC, it seems wrong for headers, since they can be used from either C or
C++. Also, seems unnecessary here, since 'return' is implied by the
fact that the 'next' statement is the end of the routine.
dw
On 8/18/2016 10:50 PM, lhmouse wrote:
Given the `_fxsave()` function returning `void`, it is invalid C but valid C++:
# WG14 N1256 (C99) / N1570 (C11)
6.8.6.4 The return statement
Constraints
1 A return statement with an expression shall not appear in a function
whose return type is void. ...
# WG21 N1804 (C++03)
6.6.3 The return statement [stmt.return]
3 A return statement with an expression of type “cv void” can be used
only in functions with a return type of cv void; the expression
is evaluated just before the function returns to its caller.
# WG21 N4582 (C++1z)
6.6.3 The return statement [stmt.return]
2 ... A return statement with an operand of type void shall be used
only in a function whose return type is cv void. ...
------------------
Best regards,
lh_mouse
2016-08-19
-------------------------------------------------------------
发件人:David Wohlferd <d...@limegreensocks.com>
发送日期:2016-08-19 11:51
收件人:gcc@gcc.gnu.org
抄送:
主题:fxsrintrin.h
According to the docs
(https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html),
__builtin_ia32_fxsave() has return type 'void.' Given that, does this
code (from gcc/config/i386/fxsrintrin.h) make sense?
_fxsave (void *__P)
{
return __builtin_ia32_fxsave (__P);
}
Returning a void? Is that a thing? Similar question for _fxrstor,
_fxsave64, and _fxrstor64.
And again in xsaveintrin.h for _xsave, _xrstor, _xsave64 and _xrstor64?
dw