diff options
author | Dan Gohman <gohman@apple.com> | 2008-05-16 00:16:32 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-05-16 00:16:32 +0000 |
commit | 561a42fafe7f3bad16ed4f8f6b223394b4dc3529 (patch) | |
tree | a7901b76d7f8d1549cc9559a68130f56081443bb | |
parent | 0e135bfde3d48350ff74400eeeb9d12f33d1dba8 (diff) | |
download | external_llvm-561a42fafe7f3bad16ed4f8f6b223394b4dc3529.tar.gz external_llvm-561a42fafe7f3bad16ed4f8f6b223394b4dc3529.tar.bz2 external_llvm-561a42fafe7f3bad16ed4f8f6b223394b4dc3529.zip |
Revert the change from r51157 in
test/Verifier/2002-11-05-GetelementptrPointers.ll, which was incorrect.
Instead, fix getIndexedType to not follow pointer types, as
PointerType is a subclass of CompositeType.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51171 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/VMCore/Instructions.cpp | 2 | ||||
-rw-r--r-- | test/Verifier/2002-11-05-GetelementptrPointers.ll | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index c54815aaac..9fc70ce59b 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -1336,7 +1336,7 @@ const Type* ExtractValueInst::getIndexedType(const Type *Agg, unsigned CurIdx = 0; for (; CurIdx != NumIdx; ++CurIdx) { const CompositeType *CT = dyn_cast<CompositeType>(Agg); - if (!CT) return 0; + if (!CT || isa<PointerType>(CT)) return 0; Value *Index = Idxs[CurIdx]; if (!CT->indexValid(Index)) return 0; Agg = CT->getTypeAtIndex(Index); diff --git a/test/Verifier/2002-11-05-GetelementptrPointers.ll b/test/Verifier/2002-11-05-GetelementptrPointers.ll index c762b2a353..e37a0ffd32 100644 --- a/test/Verifier/2002-11-05-GetelementptrPointers.ll +++ b/test/Verifier/2002-11-05-GetelementptrPointers.ll @@ -1,7 +1,7 @@ -; RUN: llvm-as < %s +; RUN: not llvm-as < %s |& grep {Invalid getelementptr indices} -; This testcase was previously considered invalid for indexing into a pointer -; that is contained WITHIN a structure, but this is now valid. +; This testcase is invalid because we are indexing into a pointer that is +; contained WITHIN a structure. define void @test({i32, i32*} * %X) { getelementptr {i32, i32*} * %X, i32 0, i32 1, i32 0 |