forked from OSchip/llvm-project
[BasicAA] Turn DecomposeGEPExpression runtime checks into asserts.
When it has a DataLayout, DecomposeGEPExpression() should return the same object as GetUnderlyingObject(). Per the FIXME, it currently always has a DL, so the runtime check is redundant and can become an assert. llvm-svn: 270268
This commit is contained in:
parent
6b58c4723a
commit
f45e5b58b8
|
@ -991,13 +991,10 @@ AliasResult BasicAAResult::aliasGEP(const GEPOperator *GEP1, uint64_t V1Size,
|
|||
const Value *GEP1BasePtr =
|
||||
DecomposeGEPExpression(GEP1, GEP1BaseOffset, GEP1VariableIndices,
|
||||
GEP1MaxLookupReached, DL, &AC, DT);
|
||||
// DecomposeGEPExpression and GetUnderlyingObject should return the
|
||||
// same result except when DecomposeGEPExpression has no DataLayout.
|
||||
// FIXME: They always have a DataLayout, so this should become an
|
||||
// assert.
|
||||
if (GEP1BasePtr != UnderlyingV1 || GEP2BasePtr != UnderlyingV2) {
|
||||
return MayAlias;
|
||||
}
|
||||
|
||||
assert(GEP1BasePtr == UnderlyingV1 && GEP2BasePtr == UnderlyingV2 &&
|
||||
"DecomposeGEPExpression returned a result different from "
|
||||
"GetUnderlyingObject");
|
||||
// If the max search depth is reached the result is undefined
|
||||
if (GEP2MaxLookupReached || GEP1MaxLookupReached)
|
||||
return MayAlias;
|
||||
|
@ -1029,12 +1026,10 @@ AliasResult BasicAAResult::aliasGEP(const GEPOperator *GEP1, uint64_t V1Size,
|
|||
DecomposeGEPExpression(GEP2, GEP2BaseOffset, GEP2VariableIndices,
|
||||
GEP2MaxLookupReached, DL, &AC, DT);
|
||||
|
||||
// DecomposeGEPExpression and GetUnderlyingObject should return the
|
||||
// same result except when DecomposeGEPExpression has no DataLayout.
|
||||
// FIXME: They always have a DataLayout, so this should become an assert.
|
||||
if (GEP1BasePtr != UnderlyingV1 || GEP2BasePtr != UnderlyingV2) {
|
||||
return MayAlias;
|
||||
}
|
||||
assert(GEP1BasePtr == UnderlyingV1 && GEP2BasePtr == UnderlyingV2 &&
|
||||
"DecomposeGEPExpression returned a result different from "
|
||||
"GetUnderlyingObject");
|
||||
|
||||
|
||||
// If we know the two GEPs are based off of the exact same pointer (and not
|
||||
// just the same underlying object), see if that tells us anything about
|
||||
|
@ -1081,10 +1076,10 @@ AliasResult BasicAAResult::aliasGEP(const GEPOperator *GEP1, uint64_t V1Size,
|
|||
|
||||
// DecomposeGEPExpression and GetUnderlyingObject should return the
|
||||
// same result except when DecomposeGEPExpression has no DataLayout.
|
||||
// FIXME: They always have a DataLayout, so this should become an assert.
|
||||
if (GEP1BasePtr != UnderlyingV1) {
|
||||
return MayAlias;
|
||||
}
|
||||
assert(GEP1BasePtr == UnderlyingV1 &&
|
||||
"DecomposeGEPExpression returned a result different from "
|
||||
"GetUnderlyingObject");
|
||||
|
||||
// If the max search depth is reached the result is undefined
|
||||
if (GEP1MaxLookupReached)
|
||||
return MayAlias;
|
||||
|
|
Loading…
Reference in New Issue