Issue 135917
Summary [CodeGen] Miscompilation at -Os
Labels llvm:codegen, miscompilation
Assignees dtcxzyw
Reporter dtcxzyw
    Reproducer:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@j = global i32 0
@r = global ptr @j
@i = global i1 false
@.str = constant [4 x i8] c"%d\0A\00"

define i32 @main() {
entry:
  %0 = icmp eq i8 0, 0
  br i1 %0, label %for.body.i.i, label %n.exit.i

for.body.i.i: ; preds = %entry
  store i1 true, ptr @i, align 4
  br label %n.exit.i

n.exit.i:                                         ; preds = %for.body.i.i, %entry
  %1 = load ptr, ptr @r, align 8
  %2 = load i1, ptr @i, align 4
  %broadcast.splatinsert2 = insertelement <4 x i1> zeroinitializer, i1 %2, i64 0
  %3 = xor <4 x i1> %broadcast.splatinsert2, splat (i1 true)
  %not.broadcast.splat3 = shufflevector <4 x i1> %3, <4 x i1> zeroinitializer, <4 x i32> zeroinitializer
  %4 = zext <4 x i1> %not.broadcast.splat3 to <4 x i32>
  %5 = extractelement <4 x i32> %4, i64 0
  %6 = extractelement <4 x i32> %4, i64 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %n.exit.i
  %spec.select = select i1 false, i32 0, i32 %5
 store i32 %6, ptr %1, align 4
  %7 = icmp eq i32 0, 0
  br i1 %7, label %o.exit, label %vector.body

o.exit: ; preds = %vector.body
  %8 = load i32, ptr @j, align 4
  %call1 = tail call i32 (ptr, ...) @printf(ptr @.str, i32 %8)
  ret i32 0
}

declare i32 @printf(ptr, ...)
```
```
> bin/llubi reduced.ll
0
> bin/lli reduced.ll
1
```
llvm version: ece10a64cb180ba931b60cbd939d80412973eada

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to