| Issue |
178245
|
| Summary |
[InstCombine] Miscompilation at O1
|
| Labels |
miscompilation,
llvm:instcombine,
floating-point,
generated by fuzzer
|
| Assignees |
arsenm,
dtcxzyw
|
| Reporter |
dtcxzyw
|
Reproducer: https://alive2.llvm.org/ce/z/BPpLg_
```
; bin/opt -passes="instcombine<no-verify-fixpoint>" test.ll -S
define i32 @src(i32 %i.0.i.i) {
entry:
%conv102.i.i = sext i32 %i.0.i.i to i64
%add.i128.i.i = add i64 %conv102.i.i, 1177359834
%tobool104.i.i = icmp ne i64 %add.i128.i.i, 0
%conv108.i.i = zext i1 %tobool104.i.i to i16
%mul.i.i.i = mul i16 -5, %conv108.i.i
%conv111.i.i = sext i16 %mul.i.i.i to i32
%0 = bitcast i32 %conv111.i.i to float
%1 = fcmp uno float %0, 0.000000e+00
%2 = call float @llvm.copysign.f32(float 0.000000e+00, float %0)
%3 = select i1 %1, float 0.000000e+00, float %2
%4 = bitcast float %3 to i32
ret i32 %4
}
```
Output:
```
define i32 @src(i32 %i.0.i.i) {
entry:
%tobool104.i.i.not = icmp eq i32 %i.0.i.i, -1177359834
%conv111.i.i = select i1 %tobool104.i.i.not, i32 0, i32 -1177359834
%0 = bitcast i32 %conv111.i.i to float
%1 = fcmp uno float %0, 0.000000e+00
%2 = call float @llvm.copysign.f32(float 0.000000e+00, float %0)
%3 = select i1 %1, float 0.000000e+00, float %2
%4 = bitcast float %3 to i32
ret i32 %4
}
```
```
Transformation doesn't verify!
ERROR: Value mismatch
Example:
i32 %i.0.i.i = #x00000000 (0)
Source:
i64 %conv102.i.i = #x0000000000000000 (0)
i64 %add.i128.i.i = #x00000000462d15da (1177359834)
i1 %tobool104.i.i = #x1 (1)
i16 %conv108.i.i = #x0001 (1)
i16 %mul.i.i.i = #xfffb (65531, -5)
i32 %conv111.i.i = #xfffffffb (4294967291, -5)
float %#0 = #xfffffffb (QNaN)
i1 %#1 = #x1 (1)
float %#2 = #x80000000 (-0.0)
float %#3 = #x00000000 (+0.0)
i32 %#4 = #x00000000 (0)
Target:
i1 %tobool104.i.i.not = #x0 (0)
i32 %conv111.i.i = #xb9d2ea26 (3117607462, -1177359834)
float %#0 = #xb9d2ea26 (-0.000402287754?)
i1 %#1 = #x0 (0)
float %#2 = #x80000000 (-0.0)
float %#3 = #x80000000 (-0.0)
i32 %#4 = #x80000000 (2147483648, -2147483648)
Source value: #x00000000 (0)
Target value: #x80000000 (2147483648, -2147483648)
```
llvm version: 94e21bcec061c1691cd0d5382e3c6f420e0386c4
Looks like it is triggered by https://github.com/llvm/llvm-project/pull/177942. cc @arsenm
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs