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

--- Comment #1 from Francesco Zappa Nardelli <francesco.zappa.nardelli at gmail 
dot com> 2012-08-23 16:34:38 UTC ---
Here is another C program that hits a similar write-introduction problem:

int g_7, g_372;

char func_10 () {
  for (; g_7 < 0; ++g_7) {
  }
  return 0;
}

void main () {
  int l_8;
lbl_914:
  (l_8 = g_7) <= func_10 ();
  if (l_8)
    if (g_372) {
    } else
      goto lbl_914;
}

The reference trace is:

*** unoptimised trace: gcc --param allow-store-data-races=0 8-min.c -o
8-min_unopt

              g_7                    0  4                Init
            g_372                    0  4                Init
              g_7                    0  4                Load
              g_7                    0  4                Load

while the optimised trace (requires -O2 or -O3 to be observable) is

*** optimised trace: gcc --param allow-store-data-races=0 -O3 8-min.c -o
8-min_opt

              g_7                    0  4                Init
            g_372                    0  4                Init
            g_372                    0  4                Load
              g_7                    0  4                Load
              g_7                    0  4               Store

[ gcc version 4.8.0 20120627 (experimental) (GCC) ]

Reply via email to