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

    <tr>
        <th>Summary</th>
        <td>
            The program results are incorrect when Clang 17 and llc 19 are used in combination during the build process
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          DigOrDog
      </td>
    </tr>
</table>

<pre>
    # Description
When using Clang 17 and [llc 19](https://github.com/llvm/llvm-project) together to build a program, the program is producing incorrect results!

# Enviroment
```
clang version 17.0.6
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin

LLVM (http://llvm.org/):
 LLVM version 19.0.0git
  Optimized build with assertions.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: alderlake
```

# Build Step
in.ll
```
; ModuleID = 'log/seed/6547.ll'
source_filename = "M"

@G = global i8 1
@G.1 = global i32 0
@G.2 = global i1 false
@G.3 = global i32 0
@G.4 = global i64 -9223372036854775808
@G.5 = global float 0x47EFFFFFE0000000
@G.6 = global i1 true
@G.7 = global i32 65536
@G.8 = global i64 9223372036854775807
@my_format_str_int = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
@my_format_str_float = private unnamed_addr constant [4 x i8] c"%f\0A\00", align 1
@my_format_str_long = private unnamed_addr constant [5 x i8] c"%ld\0A\00", align 1
@my_format_str_double = private unnamed_addr constant [5 x i8] c"%lf\0A\00", align 1

define float @f(i8 %0, i64 %1) {
BB:
  %LGV3 = load i64, ptr @G.8, align 4
  %LGV2 = load i32, ptr @G.7, align 4
  %LGV7 = load float, ptr @G.5, align 4
  %A = alloca i32, align 8
  store i64 1, ptr %A, align 4
  %L7 = load i8, ptr %A, align 1
  %B7 = sub i64 %1, %LGV3
  %2 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %B7)
  %L6 = load float, ptr %A, align 4
  %L5 = load i32, ptr %A, align 4
  %L3 = load i32, ptr %A, align 4
  %B8 = fsub float %L6, %LGV7
  %3 = call i32 (ptr, ...) @printf(ptr @my_format_str_float, float %B8)
  %L4 = load i64, ptr %A, align 4
  %L1 = load i32, ptr %A, align 4
  store i32 1, ptr %A, align 4
  %B4 = mul i32 %L5, %LGV2
  %4 = call i32 (ptr, ...) @printf(ptr @my_format_str_int, i32 %B4)
  %B3 = udiv i32 %L1, 65536
  %5 = call i32 (ptr, ...) @printf(ptr @my_format_str_int, i32 %B3)
  %LGV1 = load i32, ptr @G.1, align 4
  %LGV = load i8, ptr @G, align 1
  %6 = urem i64 %L4, 64
  %B5 = ashr i64 -9223372036854775808, %6
  %7 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %B5)
  %8 = urem i32 %L5, 32
  %B6 = ashr i32 %L3, %8
  %9 = call i32 (ptr, ...) @printf(ptr @my_format_str_int, i32 %B6)
  %C8 = icmp ule i8 %0, %L7
  %10 = zext i1 %C8 to i64
  %11 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %10)
  %C = icmp ne i8 %0, %LGV
  %12 = zext i1 %C to i64
  %13 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %12)
  %14 = add i8 %LGV, 7
  %B = srem i8 %0, %14
  %15 = zext i8 %B to i64
  %16 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %15)
  %RP = alloca float, align 8
  store i64 1, ptr %RP, align 4
  %L = load i32, ptr %RP, align 4
 %C1 = icmp uge i8 %0, %0
  %17 = zext i1 %C1 to i64
  %18 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %17)
  %19 = urem i32 %LGV1, 32
  %B2 = lshr i32 %L, %19
  %20 = call i32 (ptr, ...) @printf(ptr @my_format_str_int, i32 %B2)
  %21 = load float, ptr %RP, align 4
  %22 = call i32 (ptr, ...) @printf(ptr @my_format_str_float, float %21)
  store i32 %B2, ptr %A, align 4
  store i1 %C, ptr @G.2, align 1
  store i32 %B3, ptr @G.3, align 4
  store i64 %B5, ptr @G.4, align 4
  %CastTrunc = trunc i32 %L1 to i16
  %23 = zext i16 %CastTrunc to i64
  %24 = call i32 (ptr, ...) @printf(ptr @my_format_str_long, i64 %23)
  store float %B8, ptr %RP, align 4
  store i1 %C1, ptr @G.6, align 1
  store i64 %B7, ptr @G.4, align 4
  ret float %21
}

define i32 @main() {
entry:
  %0 = call float @f(i8 0, i64 0)
  ret i32 0
}

declare i32 @printf(ptr, ...)
```

llc-19 in.ll -o out.o -filetype=obj
clang-17 out.o -o out -no-pie -lm
./out
**Actual Result**
```
-9223372036854775807
0.000000
65536
0
-4611686018427387904
0
1
1
0
1
1
0.000000
0
```
**Expected Result**
```
-9223372036854775807
0.000000
65536
0
-4611686018427387904
0
1
1
0
1
1
0.000000
1
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWF1z4ygW_TX4hbIL0Kcf_BDZ7exUpWu6enuzjyksYZkZDC5A6WR-_RYg28iWe5JJXtbl8oc4V5x77oWLLjWGt5KxBcgqkK0mtLM7pRcr3v6uV6qdbFTzugAkgStmas0PlisJ0Aqgu__umISd4bKFS0FlC3EBqWwgyCohaojnIFsBUu6sPRiQ3AGyBmTdcrvrNrNa7QFZC_F8_JoetPqD1RaQObSqZXbHNLQKbjouGkjhQatW0z0gS2h37PgXcuN-Nl3tWHBZK61ZbaFmphPWAIID1f6TJPCLfOZa7Zm0_bUc9W__t_aOPDNtuJIQFzM0y8PID6pbZkFyB1_K_ClPp538U6qfciq47F6mrex63E4z2sC9aphw6IMy_CUM_SaNpUKwZsW1GwJk3RntBFA1FYCsN1zGfB8eHr_CXsGTgE6smdKt_zd3lz0WevCJ-HyGZqjlvZMQ_n6wfM__Yk0v6E9ud5Aaw7SLp5kdcSu2pZ2w0L7RWwj_pYyFy2__cVgqGqYF_ZONansOQuU5_NuyQ7jG5UyIcZukgl9V0wn22wqCZAUBKYRyzhvGGkDWeZYWzpgUwcCoTtfsacsFk3TPehvyFRAyYJGiez_WCrWhAvIS4vPIDA_GEgJRNEgGgxhuqTAsGk9-ZZwOBvMUTueEJElBUJKXWVoUWYnKCJ_F-K1Q1EL0khZf1u71BYVXhM8vyFndxdyKS255liV5BCgv-V3TK07w_evTVuk9tU_G6icurTc-aP5MLYOddBFonmjTaFgrl_wOkVUpfIG8BNkK1i4sJGtAtkR37gP5C0tIBW9lFJLhTEGHfzbX9p1zCSXbt02VXU4l3utXo7qNYP90tr_zzH82bMsl6zMJpGgLSMlLCEiGnIWLOCAZdtswKKpgU1XnbcaNPtw_hhwXijbOxFkerIYhg84zp0MjEhklZGBU3DQqzkae9MAsGze78zZUuH31OFVAlUeUsUoz7y4-3ZFkdzdoRCR4OY7HEb4KeNNtIkGXR-kiYFCkpiIsRkDKg9UOOpvNfAhSdNBc2m0YgaPZGcWtKlxNiIjnt9S77Ws2HqXbBsk7Daqwx2ydPH0eOqZnhYoInHxUoZPbp6mq8kKkdDyZb3uM3-Nxn2kJeUumVYHLvju6mz1kZ2FIhEw_KgyXXpZ-miodilIF4buGP5-YeP5RwfDA7JN5JBfBuX-8obav0ze3jdEFm6L78QUblkmn2f64kh58HuSD2ARXqdnp25U7xCoWqPjsNZ4NFSoj7nHKJHG2VHnEvUclPdkyws0_OZr5kOsykOX1_gA7wWBUefw2G0Ex8tC_2It155hgbJVfoREKf7K6GF0wPhOWV3zvH2Mq5IrwCN8P72eXfMmQLw77Am2anqwjSZYwlrYK1clnzMAhPKCaRf6Uwe7an_yz_bnI7u_f4lp-2szfVM2_f7uxPdzavscMXBxxlLXtZRagWI7iKgfwiGjlZ4t2Ufbx_HpPuH_E17tCfyKLd4VjKsT3I-iTt4WLpCX49jHlVhDJh89O1ycDgiNe57rdM35LlQ8xH9So65P45b2TAT65ffdzAYjw6bg-S2rsD93J2stk_a9TIfc5ieMqRZI4c_PhHa4ymHz49HGRwSS5Un5wXvt1OgzExwN18tvqn4_Mf6OmZnaQI-FxqliNPFd5MVK0p1wCUg6eopi0-nX4IBUtq8sHstPTWFyPHJG4oXBJoRZUnzjE-p8j84vOjBD1FM-hb8bAqYKqszMFp1sumH09MJCs1OaPqE02xcUR48FwKtX0wBmcin2AzQBZq-7YaSPufVfbjgr43TfowqVRSiOHq76EoVnc9IiOo0fLNMc4L3OEy5QUSVnMUToA4MHX-MXBHGhcNE_-y8uB1ZY1_18e4VGGk2aRNPNkTidsgQuCSJkkWTHZLSjdJvM5y0jBcpxmeVKzbcmSTYYbQprNZsIXBJEUFSjHOZnjYlZQXCJKtgmiDcVFDlLE9pSL2bF9OeHGdGwxd75MBN0wYXwHmhCfW4AQkK0meuF7w5uuNSBFghtrznew3Aq2-BF1g_u2L_Sr4NQM_rljctihDu1pD-sMayCXsFb7DZfUciVh02kuW99nDt3Sg1Y1M2bSabF4bzt77R01gKyDr88L8r8AAAD__4uvSYk">