ebevhan added a comment. When I try the test case on our downstream (and when compiling for our target with an extra flag that enables a bunch of OpenCL-related address space code), I get:
ascrash.c:5:12: error: comparison between ('__attribute__((address_space(1))) char *' and '__attribute__((address_space(2))) char *') which are pointers to non-overlapping address spaces return x < y ? x : y; ~ ^ ~ ascrash.c:5:16: error: conditional operator with the second and third operands of type ('__attribute__((address_space(1))) char *' and '__attribute__((address_space(2))) char *') which are pointers to non-overlapping address spaces return x < y ? x : y; ^ ~ ~ A lot of address space code is hidden behind LangOptions.OpenCL. ================ Comment at: lib/Sema/SemaExpr.cpp:6464 LangAS RAddrSpace = rhQual.getAddressSpace(); if (S.getLangOpts().OpenCL) { // OpenCL v1.1 s6.5 - Conversion between pointers to distinct address ---------------- Here is an OpenCL condition. ================ Comment at: lib/Sema/SemaExpr.cpp:6473 S.Diag(Loc, diag::err_typecheck_op_on_nonoverlapping_address_space_pointers) << LHSTy << RHSTy << 2 << LHS.get()->getSourceRange() ---------------- Aren't these the errors you actually want? ================ Comment at: lib/Sema/SemaExpr.cpp:8860 // if both are pointers check if operation is valid wrt address spaces if (S.getLangOpts().OpenCL && isLHSPointer && isRHSPointer) { const PointerType *lhsPtr = LHSExpr->getType()->getAs<PointerType>(); ---------------- Here is another OpenCL AS error. ================ Comment at: lib/Sema/SemaExpr.cpp:10204 // Treat NULL constant as a special case in OpenCL. if (getLangOpts().OpenCL && !LHSIsNull && !RHSIsNull) { const PointerType *LHSPtr = LHSType->getAs<PointerType>(); ---------------- And another. Repository: rC Clang https://reviews.llvm.org/D50278 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits