According to MSVC manual (*1), cl.exe can skip including a header file
when that:
- contains #pragma once, or
- starts with #ifndef, or
- starts with #if ! defined.
GCC has a similar trick (*2), but it acts more stricter (e. g. there
must be _no tokens_ outside of #ifndef...#endif).
Sun C lacked #pragma once for a looong time. Oracle Developer Studio
12.5 finally implemented it, but we cannot assume such recent version.
This changeset modifies header files so that each of them include
strictly one #ifndef...#endif. I believe this is the most portable way
to trigger compiler optimizations. [Bug #16770]
*1: https://docs.microsoft.com/en-us/cpp/preprocessor/once
*2: https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html
(rb_thread_blocking_region_end): marked as deprecated.
* include/ruby/backward/rubysig.h (TRAP_BEG): fix for C++. a
patch from Aman Gupta at [ruby-core:21934]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e