Author: akaylor Date: Wed Sep 20 11:06:44 2017 New Revision: 313784 URL: http://llvm.org/viewvc/llvm-project?rev=313784&view=rev Log: Remove offset size check in nullptr arithmetic handling
Differential Revision: https://reviews.llvm.org/D37042 Modified: cfe/trunk/lib/AST/Expr.cpp cfe/trunk/test/CodeGen/nullptr-arithmetic.c cfe/trunk/test/Sema/pointer-addition.c cfe/trunk/test/SemaCXX/nullptr-arithmetic.cpp Modified: cfe/trunk/lib/AST/Expr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=313784&r1=313783&r2=313784&view=diff ============================================================================== --- cfe/trunk/lib/AST/Expr.cpp (original) +++ cfe/trunk/lib/AST/Expr.cpp Wed Sep 20 11:06:44 2017 @@ -1837,17 +1837,14 @@ bool BinaryOperator::isNullPointerArithm // Check that we have one pointer and one integer operand. Expr *PExp; - Expr *IExp; if (LHS->getType()->isPointerType()) { if (!RHS->getType()->isIntegerType()) return false; PExp = LHS; - IExp = RHS; } else if (RHS->getType()->isPointerType()) { if (!LHS->getType()->isIntegerType()) return false; PExp = RHS; - IExp = LHS; } else { return false; } @@ -1862,10 +1859,6 @@ bool BinaryOperator::isNullPointerArithm if (!PTy || !PTy->getPointeeType()->isCharType()) return false; - // Check that the integer type is pointer-sized. - if (Ctx.getTypeSize(IExp->getType()) != Ctx.getTypeSize(PExp->getType())) - return false; - return true; } InitListExpr::InitListExpr(const ASTContext &C, SourceLocation lbraceloc, Modified: cfe/trunk/test/CodeGen/nullptr-arithmetic.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/nullptr-arithmetic.c?rev=313784&r1=313783&r2=313784&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/nullptr-arithmetic.c (original) +++ cfe/trunk/test/CodeGen/nullptr-arithmetic.c Wed Sep 20 11:06:44 2017 @@ -1,4 +1,6 @@ // RUN: %clang_cc1 -S %s -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 -S %s -emit-llvm -triple i686-unknown-unknown -o - | FileCheck %s +// RUN: %clang_cc1 -S %s -emit-llvm -triple x86_64-unknown-unknown -o - | FileCheck %s #include <stdint.h> @@ -32,3 +34,14 @@ int8_t* test3(intptr_t n) { // CHECK-LABEL: test3 // CHECK: getelementptr // CHECK-NOT: inttoptr + +// This checks the case where the offset isn't pointer-sized. +// The front end will implicitly cast the offset to an integer, so we need to +// make sure that doesn't cause problems on targets where integers and pointers +// are not the same size. +int8_t *test4(int8_t b) { + return NULLPTRI8 + b; +} +// CHECK-LABEL: test4 +// CHECK: inttoptr +// CHECK-NOT: getelementptr Modified: cfe/trunk/test/Sema/pointer-addition.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/pointer-addition.c?rev=313784&r1=313783&r2=313784&view=diff ============================================================================== --- cfe/trunk/test/Sema/pointer-addition.c (original) +++ cfe/trunk/test/Sema/pointer-addition.c Wed Sep 20 11:06:44 2017 @@ -1,4 +1,6 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic -Wextra -std=c11 +// RUN: %clang_cc1 %s -fsyntax-only -triple i686-unknown-unknown -verify -pedantic -Wextra -std=c11 +// RUN: %clang_cc1 %s -fsyntax-only -triple x86_64-unknown-unknown -verify -pedantic -Wextra -std=c11 #include <stdint.h> Modified: cfe/trunk/test/SemaCXX/nullptr-arithmetic.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/nullptr-arithmetic.cpp?rev=313784&r1=313783&r2=313784&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/nullptr-arithmetic.cpp (original) +++ cfe/trunk/test/SemaCXX/nullptr-arithmetic.cpp Wed Sep 20 11:06:44 2017 @@ -1,4 +1,6 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic -Wextra -std=c++11 +// RUN: %clang_cc1 %s -fsyntax-only -triple i686-unknown-unknown -verify -pedantic -Wextra -std=c++11 +// RUN: %clang_cc1 %s -fsyntax-only -triple x86_64-unknown-unknown -verify -pedantic -Wextra -std=c++11 #include <stdint.h> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits