[Bug c/43560] New: possible wrong code bug

regehr at cs dot utah dot edu gcc-bugzilla@gcc.gnu.org
Sun Mar 28 19:20:00 GMT 2010


I don't believe the program below should crash when run.

Valgrind says the store at line 20 is at fault, which is strange since it looks
like the "if" branch should execute twice and the "else" branch 0 times.

regehr@john-home:~$ current-gcc -O small.c -o small
regehr@john-home:~$ ./small
Segmentation fault
regehr@john-home:~$ cat small.c
#include <stdio.h>

int g_6[1][2] = {{1,1}};
int g_34 = 0;
int *const g_82 = &g_6[0][1];
int *g_85[2][1] = {{&g_34}, {&g_34}};

void func_4 (void)
{
  int i;
  for (i = 0; i <= 1; i++) {
    if (g_6[0][1]) {
      *g_82 = 1;
    } else {
      int **l_109 = &g_85[1][0];
      if (&g_82 != l_109) {
      } else {
        *l_109 = &g_6[0][1];
      }
      *g_82 = 1;
    }
  }
}

int main (void)
{
  func_4();
  return 0;
} 

regehr@john-home:~$ current-gcc -v
Using built-in specs.
COLLECT_GCC=current-gcc
COLLECT_LTO_WRAPPER=/home/regehr/z/compiler-install/gcc-r157783-install/libexec/gcc/i686-pc-linux-gnu/4.5.0/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ../configure --with-libelf=/usr/local --enable-lto
--prefix=/home/regehr/z/compiler-install/gcc-r157783-install
--program-prefix=r157783- --enable-languages=c,c++
Thread model: posix
gcc version 4.5.0 20100328 (experimental) (GCC)


-- 
           Summary: possible wrong code bug
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: regehr at cs dot utah dot edu
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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



More information about the Gcc-bugs mailing list