<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/75600>75600</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            unexpected output results in fusion using -O1
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Elowen-jjw
      </td>
    </tr>
</table>

<pre>
    For the following two c files, I performed the equivalent transformation of loop from **file1.c** to **file2.c**. I ran these two files respectively using different optimization levels including **-O0**, **-O1**, **-O2**, **-O3**, **-Os**, **-Ofast**. The exact output results(i.e. checksum values) are:
```
              -O0 -O1             -O2             -O3             -Os             -Ofast 
file1.c      B446EEBD        E7E07BE5        7A003B57        7A003B57 E7E07BE5        7A003B57     
file2.c      B446EEBD        9BA54690 7A003B57        7A003B57        E7E07BE5        7A003B57   
```
 
Please help me to explain why these two files produced different output results when using the same optimization level(i.e. -O1), thank you.

command line:
```
clang <filename.c> <optimization level> -lm -I $CSMITH_HOME/include && ./a.out
```
version: clang+llvm 14.0.0
os: ubuntu 22.04

**file1.c**
```

#include "csmith.h"

static int g_a75[1];
static int64_t g_b75[1];

union U0 {
  signed f0 : 26;
  int64_t f1;
 int16_t f2;
};

static int32_t g_37 = 0x2CE6C1CCL;
static int32_t *g_120 = &g_37;
static int16_t g_169[2] = {0xB768L, 0xB768L};
static uint8_t g_206[2] = {0UL, 0UL};
static union U0 g_300 = {0x9E01EE1CL};
static union U0 *g_302[2][3][2] = {{{&g_300, &g_300}, {&g_300, &g_300}, {&g_300, &g_300}}, {{&g_300, &g_300}, {&g_300, &g_300}, {&g_300, &g_300}}};
static union U0 **volatile g_301 = &g_302[0][1][1];
static int32_t **volatile g_493 = &g_120;

static void func_1(void);

static void func_1(void) {
  int32_t *l_36[2][1][1];
  int32_t **l_94 = &l_36[1][0][0];
  int32_t ***l_93 = &l_94;
  int i, j, k;
  for (i = 0; i < 2; i++) {
    int ii_1;
 // fusion
    for (j = 0, ii_1 = 0; j < 1; j++, ii_1++) {
      for (k = 0; k < 1; k++) {
        l_36[i][j][k] = &g_37;
 g_a75[ii_1] = (*g_302[1][1][0]).f0 * g_37 - (**g_493);
      }
 }
    int jj_1;
    for (jj_1 = 0; jj_1 < 1; jj_1++) {
 g_b75[jj_1] = (*g_302[1][0][0]).f2 * g_a75[jj_1] + (**g_301).f1;
    }
 }
  ((***l_93) = (safe_mul_func_uint16_t_u_u((((safe_unary_minus_func_int64_t_s((safe_div_func_int32_t_s_s((((safe_sub_func_uint16_t_u_u(((safe_mod_func_int32_t_s_s((((*l_93) != (void *)0) < g_169[1]), 0xFA4BC5AEL)) > g_206[0]), 65535UL)) || 0xA1EAL) & 0x77DCL), g_206[1])))) != 0UL) > (-1L)), 0xA492L)));
}

int main(void) {
  int i;
  int print_hash_value = 0;
 platform_main_begin();
  crc32_gentab();
  func_1();
 transparent_crc(g_37, "g_37", print_hash_value);
  for (i = 0; i < 2; i++) {
    transparent_crc(g_169[i], "g_169[i]", print_hash_value);
 }
  for (i = 0; i < 2; i++) {
    transparent_crc(g_206[i], "g_206[i]", print_hash_value);
  }
  for (i = 0; i < 1; i++) {
 transparent_crc(g_a75[i], "g_a75[i]", print_hash_value);
  }
  for (i = 0; i < 1; i++) {
    transparent_crc(g_b75[i], "g_b75[i]", print_hash_value);
  }
  platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value);
  return 0;
}

```

**file2.c**
```

#include "csmith.h"

static int g_a75[1];
static int64_t g_b75[1];

union U0 {
  signed f0 : 26;
  int64_t f1;
 int16_t f2;
};

static int32_t g_37 = 0x2CE6C1CCL;
static int32_t *g_120 = &g_37;
static int16_t g_169[2] = {0xB768L, 0xB768L};
static uint8_t g_206[2] = {0UL, 0UL};
static union U0 g_300 = {0x9E01EE1CL};
static union U0 *g_302[2][3][2] = {{{&g_300, &g_300}, {&g_300, &g_300}, {&g_300, &g_300}}, {{&g_300, &g_300}, {&g_300, &g_300}, {&g_300, &g_300}}};
static union U0 **volatile g_301 = &g_302[0][1][1];
static int32_t **volatile g_493 = &g_120;

static void func_1(void);

static void func_1(void) {
  int32_t *l_36[2][1][1];
  int32_t **l_94 = &l_36[1][0][0];
  int32_t ***l_93 = &l_94;
  int i, j, k;
  for (i = 0; i < 2; i++) {
    int ii_1;
 int jj_1;
    int ij_1;
    // fusion
    for (j = 0, ii_1 = 0, jj_1 = 0, ij_1 = 0; ij_1 <= 1; ij_1++) {
      if (ij_1 <= 1 && j < 1) {
        for (k = 0; k < 1; k++) {
          l_36[i][j][k] = &g_37;
          g_a75[ii_1] = (*g_302[1][1][0]).f0 * g_37 - (**g_493);
        }
        j++;
        ii_1++;
      }
 if (ij_1 <= 1 && jj_1 < 1) {
        g_b75[jj_1] = (*g_302[1][0][0]).f2 * g_a75[jj_1] + (**g_301).f1;
        jj_1++;
      }
    }
  }
 ((***l_93) = (safe_mul_func_uint16_t_u_u((((safe_unary_minus_func_int64_t_s((safe_div_func_int32_t_s_s((((safe_sub_func_uint16_t_u_u(((safe_mod_func_int32_t_s_s((((*l_93) != (void *)0) < g_169[1]), 0xFA4BC5AEL)) > g_206[0]), 65535UL)) || 0xA1EAL) & 0x77DCL), g_206[1])))) != 0UL) > (-1L)), 0xA492L)));
}

int main(void) {
  int i;
  int print_hash_value = 0;
 platform_main_begin();
  crc32_gentab();
  func_1();
 transparent_crc(g_37, "g_37", print_hash_value);
  for (i = 0; i < 2; i++) {
    transparent_crc(g_169[i], "g_169[i]", print_hash_value);
 }
  for (i = 0; i < 2; i++) {
    transparent_crc(g_206[i], "g_206[i]", print_hash_value);
  }
  for (i = 0; i < 1; i++) {
 transparent_crc(g_a75[i], "g_a75[i]", print_hash_value);
  }
  for (i = 0; i < 1; i++) {
    transparent_crc(g_b75[i], "g_b75[i]", print_hash_value);
  }
  platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value);
  return 0;
}

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWVuPqzgS_jXOixVkbC7JQx5CQjRH6lGvtNPPyBCTOG0gCybdvb9-ZRvCJSTnbGtndzUKigIu1-WroqqgElpV_JAztgJuANztjNbyWJSrUBQfLJ-fTh-zuNh_rXZFCeWRwbQQovjg-QHKjwImMOWCVQBv4A94ZmValBnba0b2j5pfqGC5hLKkeaW2qORFDosUiqI4w7QsMgjwGuC10mJbiVlAWfTIuCVb8Acsaa6UV0xb17ZhyaozSyS_MPEF60pB2_M0ZaUyXZwlz_g_jWHBLkxUkOeJqPeKzyievyJzodxoSfYtCd-SyC2puiWltJKtD3-o0HzSRMKiludaKvi1kBXAC24xCyZHlrxXdQYvVNQqsktISwbIGqAtQGvgoeajl3BwzF8RnL_aIxoercloXY3WCi006pvbYnYCx_HCMNi2nKEfIj8I3XbtrxEigevfrB8ydobwPUPLYO063hLdt_BzRNPRM6e_CUYrBo9MnGHGVPaxz7OgPIcfx6-bdDuXxb5O2L6fZIM7CT-OLG8SURVCRTM2kYftDdeptlTpIo80f4dfRW01aPV3UmQZzfdQ8PxuGiSCqmwmGwUxpxmzEkBCRZiwS0I4Fxmc_4AAO5u___7jj9-i315_DwHemcpgEGAPYA9aAO-oVdRy0uiFlRUvckDWUNsHOBDikkHbsZDV8BSV2q7jOpc1xNhCTt-1idqftNRykw4fTqqMy6N1BBj3mSpJJU8gzyU8RNR3gRvYwN0CEoz3PSdSPPEtj_mucxWyNwSBH7TFpjvlHqYIKrewdxWBV42p3RF5Lm1P0XCn2x_b6RARrBERHwKyhegTb0JvY282LxPoNS_A60NkY6T5AfaU7ASvxnCIbG8J3AADd2v4_QB9Br63eFG51176N6GqeS4XWgFG3ljBmxF-mxRsA3iICEKdzWWI7DC0Nw9ltGsE4cYgcANiTn3zzUc7jpDpuM21v9XL7-52DH-a_sfOA7y-FIJKLpiOn927xzoqyITD7p3uZ8lQm7MknTYbo-mEvBR8D9M6TyIb4IVaqTb166z9uulBERHxups6BR-OkIto6bR4G-lGDPVO96SNAtIpWDpDXsjVzTmpr_feTlqUULVoU4uABFBdbiDWlwAH-jPwslHHo14LAHgH8A6mtW6VV8ZG-6nRjjdarLN10rZsfdnaMjx3LF9VvndK3jsl73fFIGxiyk0wT-b0fi2zUVu5tlUN5sq06BWsPbi3-u7gpZXqvDb9bd5IaCFnSfqZZUCp8mgieL1qAnw69QPcC-ZpEEGzaoN4mo5c2__1_iNn0MgZ3DhDh-I46HtGkK2Zh3AnXdNSi0HKaqQGT0VTFmW1iHSR1U1Pj-qobuUWLVed0_IrynheV4a7eTBFVY9pzy_XTVUrUdVu95iqOn5gz0Aq9g_19D3BduOM7hbazSUyPm6uTyfbxNc8kXZrJ9i46_BFUxRjeH0KoY7Rc13ivl2Z_A3wlfTaDtcvxrIH0afvbzcvjUSr5Gpt2QobkPqxZuwBvJjbLy2H1uss8Usn1X-w9zqjStSM8vxuP4R81IbOJc9ldKTVMdKv_tdUbpjOgko1Q0VKbRSzg1Y-rJykTAiODiyXNL7ZvDboAVnPZmeq3mOjpEwAXuhy188rbC6xWo3hjXR_p1tOmTZpoHtRC6FP-jmUXk39x0CZbBmA6pN-IT6_gMq-i2oKUtOD-5D6pD8b0p1Axbeo4m-jGiY8y_cAL0yCJ0Uu2aeEwA1Vm2gO8y76WH3JZF3mvbIale2dwePmt4jnmPIcU55jynNM-auMKZPv1ZptTPzOQKOAn_orPnhVb1YbRbBbwt2Bhafa4b5M-3tVOzVNTTnfHo_-7QHpevx3JiU4nJDU0Y6MY8be_Hhv2noU3W6imorT_2KU0s6efurUcNGbv55D13Poeg5dz6HrOXT9Xwxds_2K7JdkSWdsZfsIe47jL9zZcWV7aYwcQtKYYDtNbIZRjFKP4UVK_IUXz_gKI0xsbLs2drHrW8Sj3p4yirw4JjFJgYNYRrmwhLhkVlEeZryqarbyXQ-hmaAxE5X-BxzjnH1Avali525n5UrJzOP6UAEHCV7JqtMiuRRsVefs88wSyfbj_wJ53rwqNX8Izl_tWV2K1VHKcwXI2rxOHbg81rGVFBnAO6W7Oc3PZXFiiQR4pxFVAO804n8FAAD__wndLnw">