Fix rtx_code_size static initialization order fiasco
authorIlya Leoshkevich <iii@linux.ibm.com>
Thu, 25 Oct 2018 13:47:10 +0000 (13:47 +0000)
committerIlya Leoshkevich <iii@gcc.gnu.org>
Thu, 25 Oct 2018 13:47:10 +0000 (13:47 +0000)
commitcd747405e4cb332d639b248be140424b5e06b609
tree92e7c35227a53ac41bb0459c440d67ebf18735d7
parent0f317ef76269a989ae751a808f946d15b740baf9
Fix rtx_code_size static initialization order fiasco

r264556 and r264537 changed the format of EQ_ATTR_ALT RTXs to "ww",
which also required adjusting rtx_code_size initializer.  In order to
simplify things, the list of rtx_codes known to use HOST_WIDE_INTs was
replaced by the format string check.  However, unlike the old one, this
new check cannot be always performed at compile time, in which case a
static constructor is generated.  This may lead to a static
initialization order fiasco with respect to other static constructors
in the compiler, in case of PR87747, cselib's pool_allocator.

gcc/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

PR bootstrap/87747
* rtl.c (RTX_CODE_HWINT_P_1): New helper macro.
(RTX_CODE_HWINT_P): New macro.
(rtx_code_size): Use RTX_CODE_HWINT_P ().

From-SVN: r265488
gcc/ChangeLog
gcc/rtl.c