https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63937

Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |x86_64-apple-darwin14
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-11-18
          Component|fortran                     |target
                 CC|                            |amylaar at gcc dot gnu.org,
                   |                            |jgreenhalgh at gcc dot gnu.org
               Host|                            |x86_64-apple-darwin14
     Ever confirmed|0                           |1
            Summary|[5 Regression] Compiling a  |[5 Regression] Compiling
                   |very simple fortran code    |large arrays fails
                   |fails.                      |
   Target Milestone|---                         |5.0
              Build|                            |x86_64-apple-darwin14

--- Comment #2 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
I can confirm, and can provide a C testcase (on x86_64-apple-darwin14 with
trunk r217694):

$ cat a.c
void foo (void)
{
  int v[1073741825] = {};
}
$ ./bin/gcc a.c
[blows up]


And I know it sounds weird, but the behavior depends on the exact value of the
array size, in a deterministic manner. It fails for 1073741825 (every time),
but works with both 1003741825 (smaller) and 1173741825 (bigger).

I stopped it at some random moments in this long "freeze", and the stable part
of the backtrace is:

    frame #4: 0x00000001005c662a cc1`store_by_pieces_1 + 183 at expr.c:2721
    frame #5: 0x00000001005c6573 cc1`store_by_pieces_1(data=0x00007fff5fbff190,
align=64) + 275
    frame #6: 0x00000001005d98d0 cc1`clear_storage_hints(rtx_def*, rtx_def*,
block_op_methods, unsigned int, long long, unsigned long long, unsigned long
long, unsigned long long) + 58 at expr.c:2605
    frame #7: 0x00000001005d9896
cc1`clear_storage_hints(object=0x0000000142e44738, size=0x0000000142e46060,
method=BLOCK_OP_NORMAL, expected_align=0, expected_size=-1,
min_size=4294967300, max_size=4294967300, probable_max_size=4294967300) + 486


I'm not sure when that change occurred, but the only thing related to
"store_by_pieces" I could find in the ChangeLog is a series of commits:

2014-11-01  James Greenhalgh  <james.greenha...@arm.com>

Reply via email to