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