Page MenuHomePhabricator

ABataev (Alexey Bataev)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 31 2013, 4:40 AM (529 w, 2 d)

Recent Activity

Thu, Mar 23

ABataev updated the diff for D146564: [SLP]Find reused scalars in buildvector sequences, if any..

Rebase

Thu, Mar 23, 3:21 PM · Restricted Project, Restricted Project
ABataev added inline comments to D146418: Support for OpenMP 5.0 sec 2.12.7 - Declare Target initializer expressions.
Thu, Mar 23, 6:02 AM · Restricted Project, Restricted Project

Tue, Mar 21

ABataev requested review of D146564: [SLP]Find reused scalars in buildvector sequences, if any..
Tue, Mar 21, 2:11 PM · Restricted Project, Restricted Project

Mon, Mar 20

ABataev added a comment to D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

a more succinct version: https://godbolt.org/z/7YTqP89Mv shows that slp-vectorizer introduces loads from poison

Mon, Mar 20, 12:09 PM · Restricted Project, Restricted Project
ABataev committed rG59ff9d377770: [SLP]Fix PR61554: use of missing vectorized value in buildvector nodes. (authored by ABataev).
[SLP]Fix PR61554: use of missing vectorized value in buildvector nodes.
Mon, Mar 20, 12:08 PM · Restricted Project, Restricted Project
ABataev committed rG427136dc355a: [SLP][NFC]Add a test with missed buildvector node, matching the (authored by ABataev).
[SLP][NFC]Add a test with missed buildvector node, matching the
Mon, Mar 20, 10:59 AM · Restricted Project, Restricted Project
ABataev added a comment to D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

a more succinct version: https://godbolt.org/z/7YTqP89Mv shows that slp-vectorizer introduces loads from poison

Mon, Mar 20, 10:45 AM · Restricted Project, Restricted Project
ABataev added inline comments to D146418: Support for OpenMP 5.0 sec 2.12.7 - Declare Target initializer expressions.
Mon, Mar 20, 7:15 AM · Restricted Project, Restricted Project
ABataev added inline comments to D146418: Support for OpenMP 5.0 sec 2.12.7 - Declare Target initializer expressions.
Mon, Mar 20, 6:30 AM · Restricted Project, Restricted Project

Fri, Mar 17

ABataev added a comment to D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

We're still seeing issues with this at trunk, even after the followup assertion fix in 874c49f55454cb285282e6d184f809945c0beca1.

One strange thing I noticed is an entire method that now gets replaced w/ unreachable. This may just be a bug in SimplifyCFGPass that this patch triggers: https://godbolt.org/z/1G6PTd6os

(That method isn't the one that's causing problems for us, but maybe it has the same root cause)

Fri, Mar 17, 4:32 PM · Restricted Project, Restricted Project
ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Rebase

Fri, Mar 17, 11:54 AM · Restricted Project, Restricted Project
ABataev committed rG0ad87ffdcc23: [SLP]Introduce shuffle of the nodes + gather/vectorbuild of the remaining… (authored by ABataev).
[SLP]Introduce shuffle of the nodes + gather/vectorbuild of the remaining…
Fri, Mar 17, 11:22 AM · Restricted Project, Restricted Project
ABataev closed D146167: [SLP]Introduce shuffle of the nodes + gather/vectorbuild of the remaining scalars..
Fri, Mar 17, 11:21 AM · Restricted Project, Restricted Project

Thu, Mar 16

ABataev added a reviewer for D144909: [SingleSource/Vectorizer] Add unit tests for conditional scalar assignment pattern.: Meinersbur.
Thu, Mar 16, 6:01 PM · Restricted Project
ABataev added inline comments to D144634: [Clang][OpenMP] Support for Code Generation of loop bind clause.
Thu, Mar 16, 10:38 AM · Restricted Project, Restricted Project

Wed, Mar 15

ABataev requested review of D146167: [SLP]Introduce shuffle of the nodes + gather/vectorbuild of the remaining scalars..
Wed, Mar 15, 2:14 PM · Restricted Project, Restricted Project
ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Restore some deleted code

Wed, Mar 15, 6:16 AM · Restricted Project, Restricted Project
ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Rebase

Wed, Mar 15, 6:11 AM · Restricted Project, Restricted Project

Tue, Mar 14

ABataev added a comment to D145823: [OpenMP][CodeGen] Add codegen for combined 'loop' directives..

Also, can any clause affect the behavior?

If I understand your question, I don't believe that any of the allowed clauses affect the behavior in a way that would invalidate transforming the combined loops in such a manner.

At least the way we tried to design them, they should not. That said, we need to ensure the clauses apply properly, e.g., the reduction is applied to all loop-associated directives, but that should happen automagically, I think. The AMDGPU test case shows at least the right reduction.

Tue, Mar 14, 5:15 PM · Restricted Project
ABataev accepted D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..

LG

Tue, Mar 14, 1:12 PM · Restricted Project, Restricted Project
ABataev committed rG641939baa928: [SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions. (authored by ABataev).
[SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions.
Tue, Mar 14, 10:20 AM · Restricted Project, Restricted Project
ABataev closed D145988: [SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions..
Tue, Mar 14, 10:20 AM · Restricted Project, Restricted Project
ABataev committed rG874c49f55454: [SLP]Fix PR61395: need to adjust vector factor after emitting shuffle (authored by ABataev).
[SLP]Fix PR61395: need to adjust vector factor after emitting shuffle
Tue, Mar 14, 6:31 AM · Restricted Project, Restricted Project
ABataev added a comment to D145823: [OpenMP][CodeGen] Add codegen for combined 'loop' directives..

Also, can any clause affect the behavior?

Tue, Mar 14, 4:27 AM · Restricted Project
ABataev added a comment to D145823: [OpenMP][CodeGen] Add codegen for combined 'loop' directives..

Can we add also simd for such loops?

Tue, Mar 14, 4:26 AM · Restricted Project
ABataev accepted D146000: [OpenMP]Skip generating this[:1] map info for non-member variable..

LG

Tue, Mar 14, 4:25 AM · Restricted Project, Restricted Project, Restricted Project

Mon, Mar 13

ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Restore accidentally removed lines, address comments

Mon, Mar 13, 3:10 PM · Restricted Project, Restricted Project
ABataev requested review of D145988: [SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions..
Mon, Mar 13, 2:44 PM · Restricted Project, Restricted Project
ABataev added inline comments to D110978: [SLP]Improve gathering of the scalars used in the graph..
Mon, Mar 13, 2:42 PM · Restricted Project, Restricted Project
ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Rebase

Mon, Mar 13, 12:49 PM · Restricted Project, Restricted Project
ABataev committed rGf3a68ac10c84: [SLP][NFC]Initial merge of gather/buildvector code in the createBuildVector… (authored by ABataev).
[SLP][NFC]Initial merge of gather/buildvector code in the createBuildVector…
Mon, Mar 13, 6:27 AM · Restricted Project, Restricted Project
ABataev closed D145732: [SLP][NFC]Initial merge of gather/buildvector code in the createBuildVector function..
Mon, Mar 13, 6:27 AM · Restricted Project, Restricted Project

Fri, Mar 10

ABataev committed rG93a9be0cea0a: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes. (authored by ABataev).
[SLP]Initial support for reshuffling of non-starting buildvector/gather nodes.
Fri, Mar 10, 1:22 PM · Restricted Project, Restricted Project
ABataev committed rG395c11f7b82f: [SLP][NFC]Add a test with phi nodes in one tree node with different (authored by ABataev).
[SLP][NFC]Add a test with phi nodes in one tree node with different
Fri, Mar 10, 12:25 PM · Restricted Project, Restricted Project
ABataev committed rGd84e971f48bc: [SLP][NFC]Add a test with multilevel dependency between buildvector (authored by ABataev).
[SLP][NFC]Add a test with multilevel dependency between buildvector
Fri, Mar 10, 10:34 AM · Restricted Project, Restricted Project
ABataev added inline comments to D145732: [SLP][NFC]Initial merge of gather/buildvector code in the createBuildVector function..
Fri, Mar 10, 10:24 AM · Restricted Project, Restricted Project
ABataev added inline comments to D145732: [SLP][NFC]Initial merge of gather/buildvector code in the createBuildVector function..
Fri, Mar 10, 9:51 AM · Restricted Project, Restricted Project
ABataev committed rG151d3b607e1e: [SLP][NFC]Update/simplify test to avoid dead code elimination. (authored by ABataev).
[SLP][NFC]Update/simplify test to avoid dead code elimination.
Fri, Mar 10, 8:16 AM · Restricted Project, Restricted Project

Thu, Mar 9

ABataev requested review of D145732: [SLP][NFC]Initial merge of gather/buildvector code in the createBuildVector function..
Thu, Mar 9, 2:20 PM · Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Thu, Mar 9, 1:56 PM · Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Thu, Mar 9, 1:32 PM · Restricted Project, Restricted Project
ABataev accepted D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..

LG with a nit

Thu, Mar 9, 6:28 AM · Restricted Project, Restricted Project

Wed, Mar 8

ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Restore deleted code/update test

Wed, Mar 8, 1:56 PM · Restricted Project, Restricted Project
ABataev committed rG7a4061ae372b: [SLP][NFC]Update/simplify test to avoid dead code elimination. (authored by ABataev).
[SLP][NFC]Update/simplify test to avoid dead code elimination.
Wed, Mar 8, 1:50 PM · Restricted Project, Restricted Project
ABataev updated the diff for D110978: [SLP]Improve gathering of the scalars used in the graph..

Rebase

Wed, Mar 8, 1:19 PM · Restricted Project, Restricted Project
ABataev committed rG0cfe5ae0b62a: [OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes. (authored by ABataev).
[OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes.
Wed, Mar 8, 1:09 PM · Restricted Project, Restricted Project, Restricted Project
ABataev closed D145514: [OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes..
Wed, Mar 8, 1:09 PM · Restricted Project, Restricted Project, Restricted Project
ABataev accepted D145093: [OpenMP] Add map info for dereference pointer..

LG

Wed, Mar 8, 10:17 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Wed, Mar 8, 10:16 AM · Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Wed, Mar 8, 8:10 AM · Restricted Project, Restricted Project
ABataev added inline comments to D145578: [AArch64] Cost-model vector splat LD1Rs to avoid unprofitable SLP vectorisation.
Wed, Mar 8, 5:35 AM · Restricted Project, Restricted Project

Tue, Mar 7

ABataev committed rGa611b3f3059e: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes. (authored by ABataev).
[SLP]Initial support for reshuffling of non-starting buildvector/gather nodes.
Tue, Mar 7, 12:47 PM · Restricted Project, Restricted Project
ABataev closed D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..
Tue, Mar 7, 12:47 PM · Restricted Project, Restricted Project
ABataev updated the diff for D145514: [OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes..

Address comment

Tue, Mar 7, 11:38 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..
Tue, Mar 7, 9:14 AM · Restricted Project, Restricted Project
ABataev requested review of D145514: [OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes..
Tue, Mar 7, 8:45 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Tue, Mar 7, 7:53 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Tue, Mar 7, 5:51 AM · Restricted Project, Restricted Project, Restricted Project

Mon, Mar 6

ABataev updated the diff for D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

Rebase

Mon, Mar 6, 2:47 PM · Restricted Project, Restricted Project
ABataev committed rGc411965820eb: [SLP]Fix PR61224: Compiler hits infinite loop. (authored by ABataev).
[SLP]Fix PR61224: Compiler hits infinite loop.
Mon, Mar 6, 1:50 PM · Restricted Project, Restricted Project
ABataev added a comment to D132261: [SLP]Do not reduce repeated values, use scalar red ops instead..

@ABataev, one of our internal tests seems to hit an infinite loop in the compiler after this change. I have filed issue 61224 for the issue, can you take a look?

Mon, Mar 6, 10:54 AM · Restricted Project, Restricted Project

Fri, Mar 3

ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Fri, Mar 3, 3:14 PM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Fri, Mar 3, 9:17 AM · Restricted Project, Restricted Project, Restricted Project
ABataev updated the diff for D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

Address comments

Fri, Mar 3, 6:45 AM · Restricted Project, Restricted Project
ABataev added inline comments to D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..
Fri, Mar 3, 6:42 AM · Restricted Project, Restricted Project
ABataev committed rG6b9be2620798: [SLP][NFC]Update the test to avoid dead code elimination, NFC. (authored by ABataev).
[SLP][NFC]Update the test to avoid dead code elimination, NFC.
Fri, Mar 3, 6:13 AM · Restricted Project, Restricted Project

Thu, Mar 2

ABataev commandeered D99750: [LV, VP] RFC: VP intrinsics support for the Loop Vectorizer (Proof-of-Concept).
Thu, Mar 2, 12:43 PM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Thu, Mar 2, 12:31 PM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Thu, Mar 2, 11:56 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Thu, Mar 2, 11:00 AM · Restricted Project, Restricted Project, Restricted Project
ABataev updated the diff for D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

Address comments, allow to shuffle nodes with different VF.

Thu, Mar 2, 10:57 AM · Restricted Project, Restricted Project
ABataev committed rG931bba2bc3f7: [SLP][NFC]Add a test with reused scalars in 3 tree nodes with different (authored by ABataev).
[SLP][NFC]Add a test with reused scalars in 3 tree nodes with different
Thu, Mar 2, 10:52 AM · Restricted Project, Restricted Project
ABataev added a comment to D145093: [OpenMP] Add map info for dereference pointer..

I mean we shall emit the same mapping for (*a)[:3] and for a[0][:3]

Yes I mean emit (*a)[:3] as a[0][:3]

The difficulty is during the process array section of
OMPArraySectionExpr 0x12aa37e0 '<OpenMP array section type>' lvalue

-ImplicitCastExpr 0x12a8a918 'int *' <ArrayToPointerDecay>
`-ArraySubscriptExpr 0x12a8a8d8 'int[3]':'int[3]' lvalue
-ImplicitCastExpr 0x12a8a8c0 'int (*)[3]' <LValueToRValue>
`-DeclRefExpr 0x12a8a880 'int (*)[3]' lvalue ParmVar 0x12a8a000 'a' 'int (*)[3]'
`-IntegerLiteral 0x12a8a8a0 'int' 0
-<<<NULL>>>
-IntegerLiteral 0x12a8a8f8 'int' 3

`-<<<NULL>>>

It is not easy to set section base as a[0].

Thu, Mar 2, 9:02 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added a comment to D145093: [OpenMP] Add map info for dereference pointer..

What result produces map(a[0][:3]?

Yes, that would be another way to fix the runtime problem. However the difficulty is when process array section, section base is different.
with a[0][:3]
the section base is a[0]
with (*a)[:3], the section base is (*a); It is hard to set a[0] as section base during processing the array section.

That is why I am adding dereference pointer not a[0].

Thu, Mar 2, 8:45 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added a comment to D145093: [OpenMP] Add map info for dereference pointer..

What result produces map(a[0][:3]?

Thu, Mar 2, 6:57 AM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..
Thu, Mar 2, 5:49 AM · Restricted Project, Restricted Project

Wed, Mar 1

ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Wed, Mar 1, 4:30 PM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D145093: [OpenMP] Add map info for dereference pointer..
Wed, Mar 1, 12:52 PM · Restricted Project, Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Wed, Mar 1, 8:48 AM · Restricted Project, Restricted Project
ABataev updated the diff for D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..

Address comments

Wed, Mar 1, 8:03 AM · Restricted Project, Restricted Project
ABataev committed rG4e4ad3ab0ec9: [SLP][NFC]Update the test to simplify and avoid dead instruction (authored by ABataev).
[SLP][NFC]Update the test to simplify and avoid dead instruction
Wed, Mar 1, 6:40 AM · Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Wed, Mar 1, 6:12 AM · Restricted Project, Restricted Project

Tue, Feb 28

ABataev committed rGacc30a169eab: [OpenMP]Emit captured decls for target data if no devices were specified. (authored by ABataev).
[OpenMP]Emit captured decls for target data if no devices were specified.
Tue, Feb 28, 12:21 PM · Restricted Project, Restricted Project
ABataev closed D144993: [OpenMP] Emit captured decls for target data if no devices were specified..
Tue, Feb 28, 12:21 PM · Restricted Project, Restricted Project
ABataev requested review of D144993: [OpenMP] Emit captured decls for target data if no devices were specified..
Tue, Feb 28, 11:20 AM · Restricted Project, Restricted Project
ABataev accepted D144992: [SLP] Add banner argument to SLP costs debug printer method - NFC..

LG

Tue, Feb 28, 11:11 AM · Restricted Project, Restricted Project
ABataev committed rG1d6b5b66bb6b: [SLP]Fix PR61050: Assertion `I->use_empty() && "trying to erase instruction… (authored by ABataev).
[SLP]Fix PR61050: Assertion `I->use_empty() && "trying to erase instruction…
Tue, Feb 28, 7:53 AM · Restricted Project, Restricted Project
ABataev requested review of D144958: [SLP]Initial support for reshuffling of non-starting buildvector/gather nodes..
Tue, Feb 28, 5:21 AM · Restricted Project, Restricted Project
ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Tue, Feb 28, 4:13 AM · Restricted Project, Restricted Project

Mon, Feb 27

ABataev added a comment to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..

I'd expect this to cause cost changes - have you had any luck creating tests demonstrating that?

I was not able to make one. Existing tests that are sensitive to this cost modeling are:

  • for plain wide loads:

llvm/test/Transforms/SLPVectorizer/X86/remark_horcost.ll
llvm/test/Transforms/SLPVectorizer/X86/remark_not_all_parts.ll

  • for gather loads:

llvm/test/Transforms/SLPVectorizer/X86/remark_gather-load-redux-cost.ll

But yep, I agree that this is not a great coverage.

Make them to emit remarks with costs estimations?

I'm not sure I understand. All these tests do already check for pass-remarks output which includes vec tree cost. Did you mean something else?

Mon, Feb 27, 6:30 PM · Restricted Project, Restricted Project
ABataev added a comment to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..

I'd expect this to cause cost changes - have you had any luck creating tests demonstrating that?

I was not able to make one. Existing tests that are sensitive to this cost modeling are:

  • for plain wide loads:

llvm/test/Transforms/SLPVectorizer/X86/remark_horcost.ll
llvm/test/Transforms/SLPVectorizer/X86/remark_not_all_parts.ll

  • for gather loads:

llvm/test/Transforms/SLPVectorizer/X86/remark_gather-load-redux-cost.ll

But yep, I agree that this is not a great coverage.

Mon, Feb 27, 5:34 PM · Restricted Project, Restricted Project
ABataev accepted D144895: [SLP] Fixes crash in BoUpSLP::isGatherShuffledEntry().

LG, thanks!

Mon, Feb 27, 10:56 AM · Restricted Project, Restricted Project
ABataev added inline comments to D144895: [SLP] Fixes crash in BoUpSLP::isGatherShuffledEntry().
Mon, Feb 27, 10:47 AM · Restricted Project, Restricted Project
ABataev added a comment to D141940: [SLP]Add shuffling of extractelements to avoid extra costs/data movement..

Failing assertion is

assert.h assertion failed at ...llvm/include/llvm/ADT/SmallVector.h:298 in const_reference llvm::SmallVectorTemplateCommon<llvm::Value *>::operator[](size_type) const [T = llvm::Value *]: idx < size()

Heads up: this commits crashes one of our tests, the stack trace is:

Mon, Feb 27, 10:14 AM · Restricted Project, Restricted Project
ABataev committed rG007177bdde60: [SLP]Fix PR61018: Assertion `Mask[I] == UndefMaskElem && "Multiple uses (authored by ABataev).
[SLP]Fix PR61018: Assertion `Mask[I] == UndefMaskElem && "Multiple uses
Mon, Feb 27, 10:11 AM · Restricted Project, Restricted Project
ABataev committed rG5f53e85f8aa9: [SLP]Fix a crash when trying to find reduced ops for the reduced value. (authored by ABataev).
[SLP]Fix a crash when trying to find reduced ops for the reduced value.
Mon, Feb 27, 7:33 AM · Restricted Project, Restricted Project
ABataev added a comment to D140580: [SLP]Do not emit many extractelements, reuse the single one emitted..

This patch is causing a crash even after the 26fec4e845a833214d2b0036ea90f1b1c2418d50
IR:

target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"

define void @foo() #0 {
bb:
  br label %bb1

bb1:                                              ; preds = %bb1, %bb
  %inst = phi i32 [ poison, %bb ], [ %inst58, %bb1 ]
  %inst2 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 poison
  %inst3 = load i32, ptr addrspace(1) %inst2, align 4
  %inst4 = add i32 %inst3, -1
  store i32 %inst4, ptr addrspace(1) %inst2, align 4
  %inst5 = add i32 poison, -1
  %inst6 = mul i32 %inst4, %inst
  %inst7 = mul i32 %inst6, %inst5
  %inst8 = add nuw nsw i64 poison, 1
  %inst9 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst8
  %inst10 = load i32, ptr addrspace(1) %inst9, align 4
  %inst11 = add i32 %inst10, -1
  store i32 %inst11, ptr addrspace(1) %inst9, align 4
  %inst12 = add i32 poison, -1
  %inst13 = mul i32 %inst11, %inst7
  %inst14 = mul i32 %inst13, %inst12
  %inst15 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 poison
  %inst16 = load i32, ptr addrspace(1) %inst15, align 4
  %inst17 = add i32 %inst16, -1
  store i32 %inst17, ptr addrspace(1) %inst15, align 4
  %inst18 = add i32 poison, -1
  %inst19 = mul i32 %inst17, %inst14
  %inst20 = mul i32 %inst19, %inst18
  %inst21 = add nuw nsw i64 poison, 1
  %inst22 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst21
  %inst23 = load i32, ptr addrspace(1) %inst22, align 4
  %inst24 = add i32 %inst23, -1
  store i32 %inst24, ptr addrspace(1) %inst22, align 4
  %inst25 = add i32 poison, -1
  %inst26 = mul i32 %inst24, %inst20
  %inst27 = mul i32 %inst26, %inst25
  %inst28 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 poison
  %inst29 = load i32, ptr addrspace(1) %inst28, align 4
  %inst30 = add i32 %inst29, -1
  store i32 %inst30, ptr addrspace(1) %inst28, align 4
  %inst31 = mul i32 %inst30, 47961
  %inst32 = add i32 %inst31, -1
  %inst33 = mul i32 %inst30, %inst27
  %inst34 = mul i32 %inst33, %inst32
  %inst35 = add nuw nsw i64 poison, 1
  %inst36 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst35
  %inst37 = load i32, ptr addrspace(1) %inst36, align 4
  %inst38 = add i32 %inst37, -1
  store i32 %inst38, ptr addrspace(1) %inst36, align 4
  %inst39 = mul i32 %inst38, 47961
  %inst40 = add i32 %inst39, -1
  %inst41 = mul i32 %inst38, %inst34
  %inst42 = mul i32 %inst41, %inst40
  %inst43 = add nuw nsw i64 %inst35, 1
  %inst44 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst43
  %inst45 = load i32, ptr addrspace(1) %inst44, align 4
  %inst46 = add i32 %inst45, -1
  store i32 %inst46, ptr addrspace(1) %inst44, align 4
  %inst47 = mul i32 %inst46, 47961
  %inst48 = add i32 %inst47, -1
  %inst49 = mul i32 %inst46, %inst42
  %inst50 = mul i32 %inst49, %inst48
  %inst51 = add nuw nsw i64 %inst43, 1
  %inst52 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst51
  %inst53 = load i32, ptr addrspace(1) %inst52, align 4
  %inst54 = add i32 %inst53, -1
  store i32 %inst54, ptr addrspace(1) %inst52, align 4
  %inst55 = mul i32 %inst54, 47961
  %inst56 = add i32 %inst55, -1
  %inst57 = mul i32 %inst54, %inst50
  %inst58 = mul i32 %inst57, %inst56
  br label %bb1
}

attributes #0 = { "target-features"="+avx" }

Command:

opt -passes=slp-vectorizer -disable-output ir.ll

Result:

opt: llvm-project/llvm/include/llvm/ADT/DenseMap.h:1251: llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::value_type* llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::operator->() const [with KeyT = llvm::Value*; ValueT = llvm::SmallVector<llvm::Instruction*>; KeyInfoT = llvm::DenseMapInfo<llvm::Value*, void>; Bucket = llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*> >; bool IsConst = false; llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::pointer = llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*> >*; llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::value_type = llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*> >]: Assertion `Ptr != End && "dereferencing end() iterator"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: bin/opt -passes=slp-vectorizer -disable-output bugpoint-reduced-simplified-minimized.ll
 #0 0x0000000003ab5864 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) llvm-project/llvm/lib/Support/Unix/Signals.inc:565:0
 #1 0x0000000003ab5c53 PrintStackTraceSignalHandler(void*) llvm-project/llvm/lib/Support/Unix/Signals.inc:639:0
 #2 0x0000000003ab3783 llvm::sys::RunSignalHandlers() llvm-project/llvm/lib/Support/Signals.cpp:104:0
 #3 0x0000000003ab529f SignalHandler(int) llvm-project/llvm/lib/Support/Unix/Signals.inc:410:0
 #4 0x00007f1bd34035e0 __restore_rt sigaction.c:0:0
 #5 0x00007f1bd1f691f7 raise (/lib64/libc.so.6+0x351f7)
 #6 0x00007f1bd1f6a8e8 abort (/lib64/libc.so.6+0x368e8)
 #7 0x00007f1bd1f62266 __assert_fail_base (/lib64/libc.so.6+0x2e266)
 #8 0x00007f1bd1f62312 (/lib64/libc.so.6+0x2e312)
 #9 0x0000000003dd059a llvm::DenseMapIterator<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 6u>, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 6u>>, false>::operator->() const llvm-project/llvm/include/llvm/ADT/DenseMap.h:1252:0
#10 0x0000000003d87336 (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13046:0
#11 0x0000000003d8a956 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Value*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&)::'lambda'(llvm::Instruction*, llvm::Value*&, llvm::Value*&)::operator()(llvm::Instruction*, llvm::Value*&, llvm::Value*&) const llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13745:0
#12 0x0000000003d8abcb llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Value*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13760:0
#13 0x0000000003d8af43 llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Value*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13812:0
#14 0x0000000003d8d040 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:14254:0
#15 0x0000000003d7ef19 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:11703:0
#16 0x0000000003d7ea2f llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:11634:0
#17 0x0000000003f47c92 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#18 0x000000000312d1bc llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/include/llvm/IR/PassManager.h:521:0
#19 0x0000000003f506ce llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#20 0x000000000312cb92 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm-project/llvm/lib/IR/PassManager.cpp:125:0
#21 0x0000000003f50632 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#22 0x000000000312cecc llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm-project/llvm/include/llvm/IR/PassManager.h:521:0
#23 0x0000000001bf4eeb llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) llvm-project/llvm/tools/opt/NewPMDriver.cpp:522:0
#24 0x0000000001c1f4f2 main llvm-project/llvm/tools/opt/opt.cpp:719:0
#25 0x00007f1bd1f55c05 __libc_start_main (/lib64/libc.so.6+0x21c05)
#26 0x0000000001bed2a9 _start (llvm-project/buildDA/bin/opt+0x1bed2a9)

It doesn't crash if I revert 26fec4e845a833214d2b0036ea90f1b1c2418d50 and 5dccea5a68fb5181ab88ce6faac4668934f35cd7.

Mon, Feb 27, 7:33 AM · Restricted Project, Restricted Project
ABataev added a comment to D141940: [SLP]Add shuffling of extractelements to avoid extra costs/data movement..

Heads up: this commits crashes one of our tests, the stack trace is:

...
 #2 0x000055c65640bbd6 CrashRecoverySignalHandler(int) (clang+0x800bbd6)
 #3 0x00007fda88e7b1c0 __restore_rt (/usr/grte/v5/lib64/libpthread.so.0+0x151c0)
 #4 0x000055c655b71964 llvm::slpvectorizer::BoUpSLP::isGatherShuffledEntry(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallVectorImpl<int>&, llvm::SmallVectorImpl<llvm::slpvectorizer::BoUpSLP::TreeEntry const*>&) (clang+0x7771964)
 #5 0x000055c655b6c47c llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>) (clang+0x776c47c)
 #6 0x000055c655b74903 llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>) (clang+0x7774903)
 #7 0x000055c655b8d3a5 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (clang+0x778d3a5)
 #8 0x000055c655b92a0a bool tryToVectorizeSequence<llvm::Value>(llvm::SmallVectorImpl<llvm::Value*>&, llvm::function_ref<unsigned int (llvm::Value*)>, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::ArrayRef<llvm::Value*>, bool)>, bool) (clang+0x7792a0a)
 #9 0x000055c655b89681 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (clang+0x7789681)
#10 0x000055c655b87eb5 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (clang+0x7787eb5)
#11 0x000055c655b877e6 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (clang+0x77877e6)
#12 0x000055c654ce1e32 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (clang+0x68e1e32)
#13 0x000055c6562b07cb llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (clang+0x7eb07cb)
#14 0x000055c651f02472 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (clang+0x3b02472)
#15 0x000055c6562b2b27 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (clang+0x7eb2b27)
#16 0x000055c651f04512 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (clang+0x3b04512)
#17 0x000055c6562afcab llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (clang+0x7eafcab)
#18 0x000055c651efa03d (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__u::unique_ptr<llvm::raw_pwrite_stream, std::__u::default_delete<llvm::raw_pwrite_stream>>&, std::__u::unique_ptr<llvm::ToolOutputFile, std::__u::default_delete<llvm::ToolOutputFile>>&) (clang+0x3afa03d)
#19 0x000055c651ef2d47 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__u::unique_ptr<llvm::raw_pwrite_stream, std::__u::default_delete<llvm::raw_pwrite_stream>>) (clang+0x3af2d47)
#20 0x000055c651eef4ca clang::CodeGenAction::ExecuteAction() (clang+0x3aef4ca)
#21 0x000055c6529aad5a clang::FrontendAction::Execute() (clang+0x45aad5a)
#22 0x000055c652919a04 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (clang+0x4519a04)
#23 0x000055c651b958ce clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (clang+0x37958ce)
#24 0x000055c651b8a4af cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (clang+0x378a4af)
...
Mon, Feb 27, 6:56 AM · Restricted Project, Restricted Project

Sun, Feb 26

ABataev added inline comments to D144770: [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI..
Sun, Feb 26, 6:07 AM · Restricted Project, Restricted Project

Fri, Feb 24

ABataev added a comment to D140580: [SLP]Do not emit many extractelements, reuse the single one emitted..

This patch is causing a crash even after the 26fec4e845a833214d2b0036ea90f1b1c2418d50
IR:

target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"

define void @foo() #0 {
bb:
  br label %bb1

bb1:                                              ; preds = %bb1, %bb
  %inst = phi i32 [ poison, %bb ], [ %inst58, %bb1 ]
  %inst2 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 poison
  %inst3 = load i32, ptr addrspace(1) %inst2, align 4
  %inst4 = add i32 %inst3, -1
  store i32 %inst4, ptr addrspace(1) %inst2, align 4
  %inst5 = add i32 poison, -1
  %inst6 = mul i32 %inst4, %inst
  %inst7 = mul i32 %inst6, %inst5
  %inst8 = add nuw nsw i64 poison, 1
  %inst9 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst8
  %inst10 = load i32, ptr addrspace(1) %inst9, align 4
  %inst11 = add i32 %inst10, -1
  store i32 %inst11, ptr addrspace(1) %inst9, align 4
  %inst12 = add i32 poison, -1
  %inst13 = mul i32 %inst11, %inst7
  %inst14 = mul i32 %inst13, %inst12
  %inst15 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 poison
  %inst16 = load i32, ptr addrspace(1) %inst15, align 4
  %inst17 = add i32 %inst16, -1
  store i32 %inst17, ptr addrspace(1) %inst15, align 4
  %inst18 = add i32 poison, -1
  %inst19 = mul i32 %inst17, %inst14
  %inst20 = mul i32 %inst19, %inst18
  %inst21 = add nuw nsw i64 poison, 1
  %inst22 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst21
  %inst23 = load i32, ptr addrspace(1) %inst22, align 4
  %inst24 = add i32 %inst23, -1
  store i32 %inst24, ptr addrspace(1) %inst22, align 4
  %inst25 = add i32 poison, -1
  %inst26 = mul i32 %inst24, %inst20
  %inst27 = mul i32 %inst26, %inst25
  %inst28 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 poison
  %inst29 = load i32, ptr addrspace(1) %inst28, align 4
  %inst30 = add i32 %inst29, -1
  store i32 %inst30, ptr addrspace(1) %inst28, align 4
  %inst31 = mul i32 %inst30, 47961
  %inst32 = add i32 %inst31, -1
  %inst33 = mul i32 %inst30, %inst27
  %inst34 = mul i32 %inst33, %inst32
  %inst35 = add nuw nsw i64 poison, 1
  %inst36 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst35
  %inst37 = load i32, ptr addrspace(1) %inst36, align 4
  %inst38 = add i32 %inst37, -1
  store i32 %inst38, ptr addrspace(1) %inst36, align 4
  %inst39 = mul i32 %inst38, 47961
  %inst40 = add i32 %inst39, -1
  %inst41 = mul i32 %inst38, %inst34
  %inst42 = mul i32 %inst41, %inst40
  %inst43 = add nuw nsw i64 %inst35, 1
  %inst44 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst43
  %inst45 = load i32, ptr addrspace(1) %inst44, align 4
  %inst46 = add i32 %inst45, -1
  store i32 %inst46, ptr addrspace(1) %inst44, align 4
  %inst47 = mul i32 %inst46, 47961
  %inst48 = add i32 %inst47, -1
  %inst49 = mul i32 %inst46, %inst42
  %inst50 = mul i32 %inst49, %inst48
  %inst51 = add nuw nsw i64 %inst43, 1
  %inst52 = getelementptr inbounds i32, ptr addrspace(1) poison, i64 %inst51
  %inst53 = load i32, ptr addrspace(1) %inst52, align 4
  %inst54 = add i32 %inst53, -1
  store i32 %inst54, ptr addrspace(1) %inst52, align 4
  %inst55 = mul i32 %inst54, 47961
  %inst56 = add i32 %inst55, -1
  %inst57 = mul i32 %inst54, %inst50
  %inst58 = mul i32 %inst57, %inst56
  br label %bb1
}

attributes #0 = { "target-features"="+avx" }

Command:

opt -passes=slp-vectorizer -disable-output ir.ll

Result:

opt: llvm-project/llvm/include/llvm/ADT/DenseMap.h:1251: llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::value_type* llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::operator->() const [with KeyT = llvm::Value*; ValueT = llvm::SmallVector<llvm::Instruction*>; KeyInfoT = llvm::DenseMapInfo<llvm::Value*, void>; Bucket = llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*> >; bool IsConst = false; llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::pointer = llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*> >*; llvm::DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConst>::value_type = llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*> >]: Assertion `Ptr != End && "dereferencing end() iterator"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: bin/opt -passes=slp-vectorizer -disable-output bugpoint-reduced-simplified-minimized.ll
 #0 0x0000000003ab5864 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) llvm-project/llvm/lib/Support/Unix/Signals.inc:565:0
 #1 0x0000000003ab5c53 PrintStackTraceSignalHandler(void*) llvm-project/llvm/lib/Support/Unix/Signals.inc:639:0
 #2 0x0000000003ab3783 llvm::sys::RunSignalHandlers() llvm-project/llvm/lib/Support/Signals.cpp:104:0
 #3 0x0000000003ab529f SignalHandler(int) llvm-project/llvm/lib/Support/Unix/Signals.inc:410:0
 #4 0x00007f1bd34035e0 __restore_rt sigaction.c:0:0
 #5 0x00007f1bd1f691f7 raise (/lib64/libc.so.6+0x351f7)
 #6 0x00007f1bd1f6a8e8 abort (/lib64/libc.so.6+0x368e8)
 #7 0x00007f1bd1f62266 __assert_fail_base (/lib64/libc.so.6+0x2e266)
 #8 0x00007f1bd1f62312 (/lib64/libc.so.6+0x2e312)
 #9 0x0000000003dd059a llvm::DenseMapIterator<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 6u>, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 6u>>, false>::operator->() const llvm-project/llvm/include/llvm/ADT/DenseMap.h:1252:0
#10 0x0000000003d87336 (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13046:0
#11 0x0000000003d8a956 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Value*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&)::'lambda'(llvm::Instruction*, llvm::Value*&, llvm::Value*&)::operator()(llvm::Instruction*, llvm::Value*&, llvm::Value*&) const llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13745:0
#12 0x0000000003d8abcb llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Value*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13760:0
#13 0x0000000003d8af43 llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Value*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13812:0
#14 0x0000000003d8d040 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:14254:0
#15 0x0000000003d7ef19 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:11703:0
#16 0x0000000003d7ea2f llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:11634:0
#17 0x0000000003f47c92 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#18 0x000000000312d1bc llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/include/llvm/IR/PassManager.h:521:0
#19 0x0000000003f506ce llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#20 0x000000000312cb92 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm-project/llvm/lib/IR/PassManager.cpp:125:0
#21 0x0000000003f50632 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#22 0x000000000312cecc llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm-project/llvm/include/llvm/IR/PassManager.h:521:0
#23 0x0000000001bf4eeb llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) llvm-project/llvm/tools/opt/NewPMDriver.cpp:522:0
#24 0x0000000001c1f4f2 main llvm-project/llvm/tools/opt/opt.cpp:719:0
#25 0x00007f1bd1f55c05 __libc_start_main (/lib64/libc.so.6+0x21c05)
#26 0x0000000001bed2a9 _start (llvm-project/buildDA/bin/opt+0x1bed2a9)

It doesn't crash if I revert 26fec4e845a833214d2b0036ea90f1b1c2418d50 and 5dccea5a68fb5181ab88ce6faac4668934f35cd7.

Fri, Feb 24, 4:44 PM · Restricted Project, Restricted Project