Author: tstellar Date: Mon Nov 13 14:26:54 2017 New Revision: 318096 URL: http://llvm.org/viewvc/llvm-project?rev=318096&view=rev Log: Merging r316824:
------------------------------------------------------------------------ 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 ------------------------------------------------------------------------ Modified: llvm/branches/release_50/lib/IR/ConstantFold.cpp llvm/branches/release_50/test/Transforms/InstCombine/gep-vector.ll Modified: llvm/branches/release_50/lib/IR/ConstantFold.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_50/lib/IR/ConstantFold.cpp?rev=318096&r1=318095&r2=318096&view=diff ============================================================================== --- llvm/branches/release_50/lib/IR/ConstantFold.cpp (original) +++ llvm/branches/release_50/lib/IR/ConstantFold.cpp Mon Nov 13 14:26:54 2017 @@ -2199,6 +2199,9 @@ Constant *llvm::ConstantFoldGetElementPt 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 Modified: llvm/branches/release_50/test/Transforms/InstCombine/gep-vector.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_50/test/Transforms/InstCombine/gep-vector.ll?rev=318096&r1=318095&r2=318096&view=diff ============================================================================== --- llvm/branches/release_50/test/Transforms/InstCombine/gep-vector.ll (original) +++ llvm/branches/release_50/test/Transforms/InstCombine/gep-vector.ll Mon Nov 13 14:26:54 2017 @@ -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 +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits