From c62ba58063c3714f36486db3bea3f79049305cb5 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Thu, 29 May 2014 23:21:12 +0000 Subject: [PATCH] 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 --- .../InstCombine/InstructionCombining.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/Transforms/InstCombine/InstructionCombining.cpp b/lib/Transforms/InstCombine/InstructionCombining.cpp index 38f92ddf665..9b8fdb27002 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(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(CurTy)) { + CurTy = CT->getTypeAtIndex(Op1->getOperand(J)); + } else { + CurTy = nullptr; + } + } } } -- 2.34.1