| Issue |
97904
|
| Summary |
The program results are incorrect when Clang 17 and llc 19 are used in combination during the build process
|
| Labels |
clang
|
| Assignees |
|
| Reporter |
DigOrDog
|
# 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
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs