diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2014-05-29 23:21:12 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2014-05-29 23:21:12 +0000 |
commit | c62ba58063c3714f36486db3bea3f79049305cb5 (patch) | |
tree | fb5a6ffe215ce1c36f2b64f293629ef94e62aceb | |
parent | e4b37ec73a7d9aecb5cbd131036188572921cc64 (diff) | |
download | llvm-c62ba58063c3714f36486db3bea3f79049305cb5.tar.gz llvm-c62ba58063c3714f36486db3bea3f79049305cb5.tar.bz2 llvm-c62ba58063c3714f36486db3bea3f79049305cb5.tar.xz |
And fix my fix to sink down through the type at the right time. My
original fix would actually trigger the *exact* same crasher as the
original bug for a different reason. Awesomesauce.
Working on test cases now, but wanted to get bots healthier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209860 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/InstCombine/InstructionCombining.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/Transforms/InstCombine/InstructionCombining.cpp b/lib/Transforms/InstCombine/InstructionCombining.cpp index 38f92ddf66..9b8fdb2700 100644 --- a/lib/Transforms/InstCombine/InstructionCombining.cpp +++ b/lib/Transforms/InstCombine/InstructionCombining.cpp @@ -1240,14 +1240,6 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) { if (Op1->getOperand(J)->getType() != Op2->getOperand(J)->getType()) return nullptr; - if (J > 1) { - if (CompositeType *CT = dyn_cast<CompositeType>(CurTy)) { - CurTy = CT->getTypeAtIndex(Op1->getOperand(J)); - } else { - CurTy = nullptr; - } - } - if (Op1->getOperand(J) != Op2->getOperand(J)) { if (DI == -1) { // We have not seen any differences yet in the GEPs feeding the @@ -1270,6 +1262,15 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) { return nullptr; } } + + // Sink down a layer of the type for the next iteration. + if (J > 0) { + if (CompositeType *CT = dyn_cast<CompositeType>(CurTy)) { + CurTy = CT->getTypeAtIndex(Op1->getOperand(J)); + } else { + CurTy = nullptr; + } + } } } |