Author: neil.hickey Date: Mon Sep 19 06:42:14 2016 New Revision: 281899 URL: http://llvm.org/viewvc/llvm-project?rev=281899&view=rev Log: Reverting r281714 due to causing an assert when calling builtins that expect a double, from CL
Modified: cfe/trunk/lib/Sema/SemaExpr.cpp cfe/trunk/lib/Sema/SemaType.cpp cfe/trunk/test/CodeGenOpenCL/fpmath.cl cfe/trunk/test/SemaOpenCL/extensions.cl Modified: cfe/trunk/lib/Sema/SemaExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=281899&r1=281898&r2=281899&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) +++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Sep 19 06:42:14 2016 @@ -828,18 +828,8 @@ ExprResult Sema::DefaultArgumentPromotio // double. const BuiltinType *BTy = Ty->getAs<BuiltinType>(); if (BTy && (BTy->getKind() == BuiltinType::Half || - BTy->getKind() == BuiltinType::Float)) { - if (getLangOpts().OpenCL && - !((getLangOpts().OpenCLVersion >= 120 && - Context.getTargetInfo() - .getSupportedOpenCLOpts() - .cl_khr_fp64) || - getOpenCLOptions().cl_khr_fp64)) { - E = ImpCastExprToType(E, Context.FloatTy, CK_FloatingCast).get(); - } else { - E = ImpCastExprToType(E, Context.DoubleTy, CK_FloatingCast).get(); - } - } + BTy->getKind() == BuiltinType::Float)) + E = ImpCastExprToType(E, Context.DoubleTy, CK_FloatingCast).get(); // C++ performs lvalue-to-rvalue conversion as a default argument // promotion, even on class types, but note: @@ -3416,14 +3406,8 @@ ExprResult Sema::ActOnNumericConstant(co if (getLangOpts().SinglePrecisionConstants) { Res = ImpCastExprToType(Res, Context.FloatTy, CK_FloatingCast).get(); } else if (getLangOpts().OpenCL && - !((getLangOpts().OpenCLVersion >= 120 && - Context.getTargetInfo() - .getSupportedOpenCLOpts() - .cl_khr_fp64) || + !((getLangOpts().OpenCLVersion >= 120) || getOpenCLOptions().cl_khr_fp64)) { - // Impose single-precision float type when: - // - in CL 1.2 or above and cl_khr_fp64 is not supported, or - // - in CL 1.1 or below and cl_khr_fp64 is not enabled. Diag(Tok.getLocation(), diag::warn_double_const_requires_fp64); Res = ImpCastExprToType(Res, Context.FloatTy, CK_FloatingCast).get(); } Modified: cfe/trunk/lib/Sema/SemaType.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=281899&r1=281898&r2=281899&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaType.cpp (original) +++ cfe/trunk/lib/Sema/SemaType.cpp Mon Sep 19 06:42:14 2016 @@ -1401,8 +1401,7 @@ static QualType ConvertDeclSpecToType(Ty Result = Context.DoubleTy; if (S.getLangOpts().OpenCL && - !((S.getLangOpts().OpenCLVersion >= 120 - && S.Context.getTargetInfo().getSupportedOpenCLOpts().cl_khr_fp64) || + !((S.getLangOpts().OpenCLVersion >= 120) || S.getOpenCLOptions().cl_khr_fp64)) { S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) << Result << "cl_khr_fp64"; Modified: cfe/trunk/test/CodeGenOpenCL/fpmath.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/fpmath.cl?rev=281899&r1=281898&r2=281899&view=diff ============================================================================== --- cfe/trunk/test/CodeGenOpenCL/fpmath.cl (original) +++ cfe/trunk/test/CodeGenOpenCL/fpmath.cl Mon Sep 19 06:42:14 2016 @@ -1,6 +1,5 @@ // RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck --check-prefix=CHECK --check-prefix=NODIVOPT %s // RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown -cl-fp32-correctly-rounded-divide-sqrt | FileCheck --check-prefix=CHECK --check-prefix=DIVOPT %s -// RUN: %clang_cc1 %s -emit-llvm -o - -DNOFP64 -cl-std=CL1.1 -triple r600-unknown-unknown -target-cpu r600 -pedantic | FileCheck --check-prefix=CHECK-DBL %s typedef __attribute__(( ext_vector_type(4) )) float float4; @@ -22,26 +21,14 @@ float4 spvectordiv(float4 a, float4 b) { return a / b; } -void printf(constant char* fmt, ...); - -#ifndef NOFP64 #pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif -void testdbllit(long *val) { - // CHECK-DBL: float 2.000000e+01 - // CHECK: double 2.000000e+01 - printf("%f", 20.0); -} -#ifndef NOFP64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable double dpscalardiv(double a, double b) { // CHECK: @dpscalardiv // CHECK: #[[ATTR]] // CHECK-NOT: !fpmath return a / b; } -#endif // CHECK: attributes #[[ATTR]] = { // NODIVOPT: "correctly-rounded-divide-sqrt-fp-math"="false" Modified: cfe/trunk/test/SemaOpenCL/extensions.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/extensions.cl?rev=281899&r1=281898&r2=281899&view=diff ============================================================================== --- cfe/trunk/test/SemaOpenCL/extensions.cl (original) +++ cfe/trunk/test/SemaOpenCL/extensions.cl Mon Sep 19 06:42:14 2016 @@ -1,16 +1,13 @@ // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.1 -// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.2 -DFP64 // Test with a target not supporting fp64. // RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -DNOFP64 -#if __OPENCL_C_VERSION__ < 120 void f1(double da) { // expected-error {{type 'double' requires cl_khr_fp64 extension}} double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}} (void) 1.0; // expected-warning {{double precision constant requires cl_khr_fp64}} } -#endif #pragma OPENCL EXTENSION cl_khr_fp64 : enable #ifdef NOFP64 @@ -24,12 +21,8 @@ void f2(void) { #endif (void) 1.0; -#ifdef FP64 -// expected-no-diagnostics -#endif - #ifdef NOFP64 -// expected-warning@-6{{double precision constant requires cl_khr_fp64, casting to single precision}} +// expected-warning@-2{{double precision constant requires cl_khr_fp64, casting to single precision}} #endif } @@ -38,8 +31,6 @@ void f2(void) { // expected-warning@-2{{unsupported OpenCL extension 'cl_khr_fp64' - ignoring}} #endif -#if __OPENCL_C_VERSION__ < 120 void f3(void) { double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}} } -#endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits