Skip to content

[SLPVectorizer] Miscompilation at O2 #127177

Closed
Closed
@dtcxzyw

Description

@dtcxzyw

Reproducer:

; bin/opt -passes=slp-vectorizer test.ll -S
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"

define i8 @test() {
entry:
  %inc.1.i.i = zext i1 false to i8
  %inc.2.i.i = zext i1 false to i8
  %inc.3.i.i = zext i1 false to i8
  %inc.6.i.i = zext i1 false to i8
  %inc.7.i.i = zext i1 false to i8
  %inc.8.i.i = zext i1 false to i8
  %inc.10.i.i = zext i1 false to i8
  %inc.11.i.i = zext i1 false to i8
  %inc.12.i.i = zext i1 true to i8
  %inc.13.i.i = zext i1 false to i8
  %inc.14.i.i = zext i1 false to i8
  %inc.15.i.i = zext i1 false to i8
  %inc9.1.i.i = add i8 %inc.2.i.i, %inc.1.i.i
  %inc9.2.i.i = add i8 %inc9.1.i.i, %inc.3.i.i
  %spec.select17.i.i = add i8 %inc9.2.i.i, %inc.6.i.i
  %spec.select18.i.i = add i8 %spec.select17.i.i, %inc.7.i.i
  %spec.select19.i.i = add i8 %spec.select18.i.i, %inc.8.i.i
  %spec.select21.i.i = add i8 %spec.select19.i.i, %inc.10.i.i
  %spec.select22.i.i = add i8 %spec.select21.i.i, %inc.11.i.i
  %spec.select23.i.i = add i8 %spec.select22.i.i, %inc.12.i.i
  %spec.select24.i.i = add i8 %spec.select23.i.i, %inc.13.i.i
  %spec.select25.i.i = add i8 %spec.select24.i.i, %inc.14.i.i
  %spec.select26.i.i = add i8 %spec.select25.i.i, %inc.15.i.i
  ret i8 %spec.select26.i.i
}

Output:

define i8 @test() {
entry:
  %0 = call i12 @llvm.ctpop.i12(i12 0)
  %1 = trunc i12 %0 to i8
  ret i8 %1
}

The correct return value is 1.

llvm version: 8a0914c

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions