Skip to content

Commit

Permalink
Merging r316824:
Browse files Browse the repository at this point in the history
------------------------------------------------------------------------
r316824 | haicheng | 2017-10-27 19:27:14 -0700 (Fri, 27 Oct 2017) | 7 lines

[ConstantFold] Fix a crash when folding a GEP that has vector index

LLVM crashes when factoring out an out-of-bound index into preceding dimension
and the preceding dimension uses vector index.  Simply bail out now when this
case happens.

Differential Revision: https://reviews.llvm.org/D38677
------------------------------------------------------------------------

llvm-svn: 318096
  • Loading branch information
tstellar committed Nov 13, 2017
1 parent 645a5f1 commit 8810e0e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
3 changes: 3 additions & 0 deletions llvm/lib/IR/ConstantFold.cpp
Expand Up @@ -2199,6 +2199,9 @@ Constant *llvm::ConstantFoldGetElementPtr(Type *PointeeTy, Constant *C,
Unknown = true;
continue;
}
if (!isa<ConstantInt>(Idxs[i - 1]))
// FIXME: add the support of cosntant vector index.
continue;
if (InRangeIndex && i == *InRangeIndex + 1) {
// If an index is marked inrange, we cannot apply this canonicalization to
// the following index, as that will cause the inrange index to point to
Expand Down
9 changes: 9 additions & 0 deletions llvm/test/Transforms/InstCombine/gep-vector.ll
Expand Up @@ -13,3 +13,12 @@ define <8 x i64*> @patatino2() {
%el = getelementptr inbounds i64, i64* undef, <8 x i64> undef
ret <8 x i64*> %el
}

@block = global [64 x [8192 x i8]] zeroinitializer, align 1

; CHECK-LABEL:vectorindex
; CHECK-NEXT: ret <2 x i8*> getelementptr inbounds ([64 x [8192 x i8]], [64 x [8192 x i8]]* @block, <2 x i64> zeroinitializer, <2 x i64> <i64 0, i64 1>, <2 x i64> <i64 8192, i64 8192>)
define <2 x i8*> @vectorindex() {
%1 = getelementptr inbounds [64 x [8192 x i8]], [64 x [8192 x i8]]* @block, i64 0, <2 x i64> <i64 0, i64 1>, i64 8192
ret <2 x i8*> %1
}

0 comments on commit 8810e0e

Please sign in to comment.