[llvm] r233116 - Remove an InstCombine that seems to have become redundant.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Tue Mar 24 16:16:20 PDT 2015


Looks like this was

https://llvm.org/bugs/show_bug.cgi?id=23010

On 24 March 2015 at 17:53, David Blaikie <dblaikie at gmail.com> wrote:
> Fires in compiler-rt, according to the bots, so I've reverted in r233121
>
> On Tue, Mar 24, 2015 at 2:31 PM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>> Author: dblaikie
>> Date: Tue Mar 24 16:31:31 2015
>> New Revision: 233116
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=233116&view=rev
>> Log:
>> Remove an InstCombine that seems to have become redundant.
>>
>> Assert that this doesn't fire - I'll remove all of this later, but just
>> leaving it in for a while in case this is firing & we just don't have
>> test coverage.
>>
>> Modified:
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineCasts.cpp
>>     llvm/trunk/test/Transforms/InstCombine/2007-05-14-Crash.ll
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCasts.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCasts.cpp?rev=233116&r1=233115&r2=233116&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCasts.cpp (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCasts.cpp Tue Mar 24
>> 16:31:31 2015
>> @@ -1455,35 +1455,20 @@ Instruction *InstCombiner::commonPointer
>>      // GEP computes a constant offset, see if we can convert these three
>>      // instructions into fewer.  This typically happens with unions and
>> other
>>      // non-type-safe code.
>> -    unsigned AS = GEP->getPointerAddressSpace();
>> -    unsigned OffsetBits = DL.getPointerSizeInBits(AS);
>> -    APInt Offset(OffsetBits, 0);
>> +    // Looks like this never actually fires due to bitcast+gep folding
>> happening
>> +    // in InstCombiner::visitGetElementPtrInst where the bitcast operand
>> to a
>> +    // gep is folded into the gep if possible, before we consider whether
>> that
>> +    // gep is used in a bitcast as well.
>> +    // Let's assert that this wouldn't fire just to be sure.
>> +#ifndef NDEBUG
>> +    APInt Offset(DL.getPointerSizeInBits(GEP->getPointerAddressSpace()),
>> 0);
>>      BitCastInst *BCI = dyn_cast<BitCastInst>(GEP->getOperand(0));
>> -    if (GEP->hasOneUse() && BCI && GEP->accumulateConstantOffset(DL,
>> Offset)) {
>> -      // FIXME: This is insufficiently tested - just a no-crash test
>> -      // (test/Transforms/InstCombine/2007-05-14-Crash.ll)
>> -      //
>> -      // Get the base pointer input of the bitcast, and the type it
>> points to.
>> -      Value *OrigBase = BCI->getOperand(0);
>> -      SmallVector<Value*, 8> NewIndices;
>> -      if (FindElementAtOffset(OrigBase->getType(), Offset.getSExtValue(),
>> -                              NewIndices)) {
>> -        // FIXME: This codepath is completely untested - could be
>> unreachable
>> -        // for all I know.
>> -        // If we were able to index down into an element, create the GEP
>> -        // and bitcast the result.  This eliminates one bitcast,
>> potentially
>> -        // two.
>> -        Value *NGEP = cast<GEPOperator>(GEP)->isInBounds() ?
>> -          Builder->CreateInBoundsGEP(OrigBase, NewIndices) :
>> -          Builder->CreateGEP(OrigBase, NewIndices);
>> -        NGEP->takeName(GEP);
>> -
>> -        if (isa<BitCastInst>(CI))
>> -          return new BitCastInst(NGEP, CI.getType());
>> -        assert(isa<PtrToIntInst>(CI));
>> -        return new PtrToIntInst(NGEP, CI.getType());
>> -      }
>> -    }
>> +    SmallVector<Value *, 8> NewIndices;
>> +    assert(!BCI || !GEP->hasOneUse() ||
>> +           !GEP->accumulateConstantOffset(DL, Offset) ||
>> +           !FindElementAtOffset(BCI->getOperand(0)->getType(),
>> +                                Offset.getSExtValue(), NewIndices));
>> +#endif
>>    }
>>
>>    return commonCastTransforms(CI);
>>
>> Modified: llvm/trunk/test/Transforms/InstCombine/2007-05-14-Crash.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/2007-05-14-Crash.ll?rev=233116&r1=233115&r2=233116&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/InstCombine/2007-05-14-Crash.ll (original)
>> +++ llvm/trunk/test/Transforms/InstCombine/2007-05-14-Crash.ll Tue Mar 24
>> 16:31:31 2015
>> @@ -15,4 +15,10 @@ entry:
>>          ret i8* %tmp35
>>  }
>>
>> -
>> +define i32* @bar(%struct.abc* %abc) {
>> +entry:
>> +        %tmp1 = bitcast %struct.abc* %abc to %struct.def*
>> +        %tmp3 = getelementptr %struct.def, %struct.def* %tmp1, i32 0, i32
>> 1
>> +        %tmp35 = bitcast %struct.abc* %tmp3 to i32*
>> +        ret i32* %tmp35
>> +}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



More information about the llvm-commits mailing list