зеркало из https://github.com/microsoft/clang-1.git
Ignore typedefs in pointer arithmetic codegen.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44529 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
f0049e6576
Коммит
ec86b97c34
|
@ -697,11 +697,11 @@ Value *ScalarExprEmitter::VisitBinSub(const BinaryOperator *E) {
|
|||
Value *LHS = Visit(E->getLHS());
|
||||
Value *RHS = Visit(E->getRHS());
|
||||
|
||||
const PointerType *LHSPtrType = E->getLHS()->getType()->getAsPointerType();
|
||||
assert(LHSPtrType == E->getRHS()->getType()->getAsPointerType() &&
|
||||
"Can't subtract different pointer types");
|
||||
const QualType LHSType = E->getLHS()->getType().getCanonicalType();
|
||||
const QualType RHSType = E->getRHS()->getType().getCanonicalType();
|
||||
assert(LHSType == RHSType && "Can't subtract different pointer types");
|
||||
|
||||
QualType LHSElementType = LHSPtrType->getPointeeType();
|
||||
QualType LHSElementType = cast<PointerType>(LHSType)->getPointeeType();
|
||||
uint64_t ElementSize = CGF.getContext().getTypeSize(LHSElementType,
|
||||
SourceLocation()) / 8;
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
// RUN: clang -emit-llvm %s
|
||||
|
||||
typedef int Int;
|
||||
|
||||
int test1(int *a, Int *b) { return a - b; }
|
Загрузка…
Ссылка в новой задаче