diff options
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/Sema.cpp | 23 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 22 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaType.cpp | 27 |
3 files changed, 1 insertions, 71 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index a1a9b9d0b8c..a851ce14556 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -212,29 +212,6 @@ void Sema::Initialize() { addImplicitTypedef("image3d_t", Context.OCLImage3dTy); addImplicitTypedef("sampler_t", Context.OCLSamplerTy); addImplicitTypedef("event_t", Context.OCLEventTy); - if (getLangOpts().OpenCLVersion >= 200) { - addImplicitTypedef("atomic_int", Context.getAtomicType(Context.IntTy)); - addImplicitTypedef("atomic_uint", - Context.getAtomicType(Context.UnsignedIntTy)); - addImplicitTypedef("atomic_long", Context.getAtomicType(Context.LongTy)); - addImplicitTypedef("atomic_ulong", - Context.getAtomicType(Context.UnsignedLongTy)); - addImplicitTypedef("atomic_float", - Context.getAtomicType(Context.FloatTy)); - addImplicitTypedef("atomic_double", - Context.getAtomicType(Context.DoubleTy)); - // OpenCLC v2.0, s6.13.11.6 requires that atomic_flag is implemented as - // 32-bit integer and OpenCLC v2.0, s6.1.1 int is always 32-bit wide. - addImplicitTypedef("atomic_flag", Context.getAtomicType(Context.IntTy)); - addImplicitTypedef("atomic_intptr_t", - Context.getAtomicType(Context.getIntPtrType())); - addImplicitTypedef("atomic_uintptr_t", - Context.getAtomicType(Context.getUIntPtrType())); - addImplicitTypedef("atomic_size_t", - Context.getAtomicType(Context.getSizeType())); - addImplicitTypedef("atomic_ptrdiff_t", - Context.getAtomicType(Context.getPointerDiffType())); - } } DeclarationName BuiltinVaList = &Context.Idents.get("__builtin_va_list"); diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 9b0ccc9458a..a793d45da4e 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -9747,19 +9747,6 @@ ExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, return ExprError(); } - if (getLangOpts().OpenCL) { - // OpenCLC v2.0 s6.13.11.8 forbids operations on atomic types. - if (LHSExpr->getType()->isAtomicType() || - RHSExpr->getType()->isAtomicType()) { - SourceRange SR(LHSExpr->getLocStart(), RHSExpr->getLocEnd()); - if (Opc == BO_Assign) - Diag(OpLoc, diag::err_atomic_assignment) << SR; - else - ResultTy = InvalidOperands(OpLoc, LHS, RHS); - return ExprError(); - } - } - switch (Opc) { case BO_Assign: ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, QualType()); @@ -10232,15 +10219,6 @@ ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, ExprValueKind VK = VK_RValue; ExprObjectKind OK = OK_Ordinary; QualType resultType; - if (getLangOpts().OpenCL) { - // OpenCLC v2.0 s6.13.11.8, the only legal unary operation. - // for atomics is '&'. - if (Opc != UO_AddrOf && InputExpr->getType()->isAtomicType()) { - return ExprError(Diag(OpLoc, diag::err_typecheck_unary_expr) - << InputExpr->getType() - << Input.get()->getSourceRange()); - } - } switch (Opc) { case UO_PreInc: case UO_PreDec: diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 03009b78b09..56142253a08 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -871,8 +871,7 @@ static QualType ConvertDeclSpecToType(TypeProcessingState &state) { if (S.getLangOpts().OpenCL && !((S.getLangOpts().OpenCLVersion >= 120) || S.getOpenCLOptions().cl_khr_fp64)) { - S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) - << Result << "cl_khr_fp64"; + S.Diag(DS.getTypeSpecTypeLoc(), diag::err_double_requires_fp64); declarator.setInvalidType(true); } break; @@ -948,30 +947,6 @@ static QualType ConvertDeclSpecToType(TypeProcessingState &state) { << DS.getSourceRange(); declarator.setInvalidType(true); } - } else if (S.getLangOpts().OpenCL) { - if (const AtomicType *AT = Result->getAs<AtomicType>()) { - const BuiltinType *BT = AT->getValueType()->getAs<BuiltinType>(); - bool NoExtTypes = BT && (BT->getKind() == BuiltinType::Int || - BT->getKind() == BuiltinType::UInt || - BT->getKind() == BuiltinType::Float); - if (!S.getOpenCLOptions().cl_khr_int64_base_atomics && !NoExtTypes) { - S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) - << Result << "cl_khr_int64_base_atomics"; - declarator.setInvalidType(true); - } - if (!S.getOpenCLOptions().cl_khr_int64_extended_atomics && - !NoExtTypes) { - S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) - << Result << "cl_khr_int64_extended_atomics"; - declarator.setInvalidType(true); - } - if (!S.getOpenCLOptions().cl_khr_fp64 && BT && - BT->getKind() == BuiltinType::Double) { - S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) - << Result << "cl_khr_fp64"; - declarator.setInvalidType(true); - } - } } // TypeQuals handled by caller. |

