[clang] Check unsupported types in expressions
authorAndrew Savonichev <andrew.savonichev@gmail.com>
Wed, 10 Mar 2021 17:23:41 +0000 (20:23 +0300)
committerAndrew Savonichev <andrew.savonichev@gmail.com>
Mon, 13 Sep 2021 11:59:37 +0000 (14:59 +0300)
commitec6c847179fd019acae4d97a18f9e7d3961a6fdf
treea4612ae7ee7f61e76e06aa21351d6d1e3e553fd0
parent8008009fd25bf51c2c85c612bfefec64e975bbe4
[clang] Check unsupported types in expressions

The patch adds missing diagnostics for cases like:

  float F3 = ((__float128)F1 * (__float128)F2) / 2.0f;

Sema::checkDeviceDecl (renamed to checkTypeSupport) is changed to work
with a type without the corresponding ValueDecl. It is also refactored
so that host diagnostics for unsupported types can be added here as
well.

Differential Revision: https://reviews.llvm.org/D109315
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/include/clang/Sema/Sema.h
clang/lib/Sema/Sema.cpp
clang/lib/Sema/SemaDecl.cpp
clang/lib/Sema/SemaExpr.cpp
clang/test/CodeGen/ibm128-unsupported.c
clang/test/OpenMP/nvptx_unsupported_type_messages.cpp
clang/test/SemaSYCL/float128.cpp
clang/test/SemaSYCL/int128.cpp