From: nagachika00@... Date: 2014-11-06T14:20:31+00:00 Subject: [ruby-dev:48735] [ruby-trunk - Bug #10350] compile error in bignum.c line 3297 with old fcc on Solaris Issue #10350 has been updated by Tomoyuki Chikanaga. Backport changed from 2.0.0: DONTNEED, 2.1: REQUIRED to 2.0.0: DONTNEED, 2.1: DONE Backported into `ruby_2_1` at r48303. ---------------------------------------- Bug #10350: compile error in bignum.c line 3297 with old fcc on Solaris https://bugs.ruby-lang.org/issues/10350#change-49829 * Author: Naohisa Goto * Status: Closed * Priority: Normal * Assignee: Naohisa Goto * Category: build * Target version: * ruby -v: ruby 2.2.0dev (2014-10-09) [sparc64-solaris2.10] * Backport: 2.0.0: DONTNEED, 2.1: DONE ---------------------------------------- Solaris上の古い fcc (Fujitsu C compiler) 5.6 にて、以下のコンパイルエラーが発生します。 ~~~ "bignum.c", line 3297: error: initialization: constant expression is expected for variable: `nlz_bits_in_msbyte_bary' ~~~ 以下のように変数の宣言と初期化を別々にしたらエラーなくビルドできました。 ~~~ Index: bignum.c =================================================================== --- bignum.c (revision 47859) +++ bignum.c (working copy) @@ -3294,7 +3294,7 @@ static const BDIGIT char_bit[1] = { CHAR_BIT }; BDIGIT numbytes_bary[bdigit_roomof(sizeof(numbytes))]; BDIGIT val_numbits_bary[bdigit_roomof(sizeof(numbytes) + 1)]; - BDIGIT nlz_bits_in_msbyte_bary[1] = { nlz_bits_in_msbyte }; + BDIGIT nlz_bits_in_msbyte_bary[1]; BDIGIT word_numbits_bary[bdigit_roomof(sizeof(word_numbits))]; BDIGIT div_bary[numberof(val_numbits_bary) + BIGDIVREM_EXTRA_WORDS]; BDIGIT mod_bary[numberof(word_numbits_bary)]; @@ -3304,6 +3304,8 @@ int sign; size_t numwords; + nlz_bits_in_msbyte_bary[0] = nlz_bits_in_msbyte; + /* * val_numbits = numbytes * CHAR_BIT - nlz_bits_in_msbyte * div, mod = val_numbits.divmod(word_numbits) ~~~ -- https://bugs.ruby-lang.org/