[PATCH] D90928: [OpenCL] Check for extension string extension lookup
Erik Tomusk via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 24 06:52:39 PST 2020
erik2020 updated this revision to Diff 307338.
erik2020 added a comment.
Added doxygen comments to updated functions
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90928/new/
https://reviews.llvm.org/D90928
Files:
clang/include/clang/Basic/OpenCLOptions.h
Index: clang/include/clang/Basic/OpenCLOptions.h
===================================================================
--- clang/include/clang/Basic/OpenCLOptions.h
+++ clang/include/clang/Basic/OpenCLOptions.h
@@ -32,38 +32,71 @@
};
llvm::StringMap<Info> OptMap;
public:
+ /// Check if \c Ext is a recognized OpenCL extension.
+ ///
+ /// \param Ext - Extension to look up.
+ /// \returns \c true if \c Ext is known, \c false otherwise.
bool isKnown(llvm::StringRef Ext) const {
return OptMap.find(Ext) != OptMap.end();
}
+ /// Check if \c Ext is an enabled OpenCL extension.
+ ///
+ /// \param Ext - Extension to look up.
+ /// \returns \c true if \c Ext is known and enabled, \c false otherwise.
bool isEnabled(llvm::StringRef Ext) const {
- return OptMap.find(Ext)->second.Enabled;
+ auto E = OptMap.find(Ext);
+ return E != OptMap.end() && E->second.Enabled;
}
- // Is supported as either an extension or an (optional) core feature for
- // OpenCL version \p CLVer.
+ /// Check if \c Ext is supported as either an extension or an (optional) core
+ /// feature for the given OpenCL version.
+ ///
+ /// \param Ext - Extension to look up.
+ /// \param LO - \c LangOptions specifying the OpenCL version.
+ /// \returns \c true if \c Ext is known and supported, \c false otherwise.
bool isSupported(llvm::StringRef Ext, const LangOptions &LO) const {
+ auto E = OptMap.find(Ext);
+ if (E == OptMap.end()) {
+ return false;
+ }
// In C++ mode all extensions should work at least as in v2.0.
auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
- auto I = OptMap.find(Ext)->getValue();
+ auto I = E->getValue();
return I.Supported && I.Avail <= CLVer;
}
- // Is supported (optional) OpenCL core features for OpenCL version \p CLVer.
- // For supported extension, return false.
+ /// Check if \c Ext is supported as an (optional) OpenCL core features for
+ /// the given OpenCL version.
+ ///
+ /// \param Ext - Extension to look up.
+ /// \param LO - \c LangOptions specifying the OpenCL version.
+ /// \returns \c true if \c Ext is known and supported, \c false otherwise.
bool isSupportedCore(llvm::StringRef Ext, const LangOptions &LO) const {
+ auto E = OptMap.find(Ext);
+ if (E == OptMap.end()) {
+ return false;
+ }
// In C++ mode all extensions should work at least as in v2.0.
auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
- auto I = OptMap.find(Ext)->getValue();
+ auto I = E->getValue();
return I.Supported && I.Avail <= CLVer && I.Core != ~0U && CLVer >= I.Core;
}
- // Is supported OpenCL extension for OpenCL version \p CLVer.
- // For supported (optional) core feature, return false.
+ /// Check if \c Ext is a supported OpenCL extension for the given OpenCL
+ /// version.
+ ///
+ /// \param Ext - Extension to look up.
+ /// \param LO - \c LangOptions specifying the OpenCL version.
+ /// \returns \c true if \c Ext is known and supported, \c false otherwise.
bool isSupportedExtension(llvm::StringRef Ext, const LangOptions &LO) const {
+ auto E = OptMap.find(Ext);
+ if (E == OptMap.end()) {
+ return false;
+ }
// In C++ mode all extensions should work at least as in v2.0.
auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
- auto I = OptMap.find(Ext)->getValue();
+ auto I = E->getValue();
return I.Supported && I.Avail <= CLVer && (I.Core == ~0U || CLVer < I.Core);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90928.307338.patch
Type: text/x-patch
Size: 3510 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20201124/981d7f8f/attachment-0001.bin>
More information about the cfe-commits
mailing list