[clang] [StrTable] Mechanically convert NVPTX builtins to use TableGen (PR #122873)
Artem Belevich via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 27 11:31:37 PST 2025
================
@@ -104,9 +104,39 @@ class PrototypeParser {
void ParseType(StringRef T) {
T = T.trim();
+
+ auto ConsumeAddrSpace = [&]() -> std::optional<unsigned> {
+ T = T.trim();
+ if (!T.consume_back(">"))
+ return std::nullopt;
+
+ auto Open = T.find_last_of('<');
+ if (Open == StringRef::npos)
+ PrintFatalError(Loc, "Mismatched angle-brackets in type");
+
+ StringRef ArgStr = T.substr(Open + 1);
+ T = T.slice(0, Open);
+ if (!T.consume_back("address_space"))
+ PrintFatalError(Loc,
+ "Only `address_space<N>` supported as a parameterized "
+ "pointer or reference type qualifier");
+
+ unsigned Number = 0;
+ if (ArgStr.getAsInteger(10, Number))
+ PrintFatalError(
+ Loc, "Expected an integer argument to the address_space qualifier");
+ if (Number == 0)
+ PrintFatalError(Loc, "No need for a qualifier for address space `0`");
+ return Number;
+ };
+
if (T.consume_back("*")) {
+ // Pointers may have an address space qualifier immediately before them.
+ std::optional<unsigned> AS = ConsumeAddrSpace();
----------------
Artem-B wrote:
Do we have any tests for the tablegen parser changes?
https://github.com/llvm/llvm-project/pull/122873
More information about the cfe-commits
mailing list