http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58554

            Bug ID: 58554
           Summary: Revision 202619 causes runtime failure in CPU2006
                    benchmark 445.gobmk
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pthaugen at gcc dot gnu.org
                CC: bergner at gcc dot gnu.org, dje.gcc at gmail dot com,
                    rguenth at gcc dot gnu.org
              Host: powerpc64-linux
            Target: powerpc64-linux
             Build: powerpc64-linux

gobmk started failing at runtime with the stated revision. Tracked down
offending code (from benchmark source engine/board.c) and reduced to the
following. Generated code is ignoring control dependence and simply calling
memset to set the entire array.

[pthaugen@igoo build_base_test_32.0000]$ cat junk.c
extern int board_size;
extern unsigned char board[421];

void clear_board(void)
{
  int k;

  for (k = 0; k < 421; k++) {
    /* Original:
    if (!((unsigned) (((k) / (19 + 1) - 1)) < (unsigned) board_size &&
(unsigned) (((k) % (19 + 1) - 1)) < (unsigned) board_size)) */
    if (k < board_size )
      board[k] = 3;
  }
}
[pthaugen@igoo build_base_test_32.0000]$
/home/pthaugen/install/gcc/trunk_work/bin/gcc -S -m32 -O3 junk.c

Generated assembler for the function:
clear_board:
    lis 3,board@ha
    li 4,3
    la 3,board@l(3)
    li 5,421
    b memset

Reply via email to