================
@@ -8038,6 +8060,32 @@ class DependentBitIntType final : public Type, public 
llvm::FoldingSetNode {
   }
 };
 
+class PredefinedSugarType final : public Type {
+public:
+  friend class ASTContext;
+  using Kind = PredefinedSugarKind;
+
+private:
+  PredefinedSugarType(Kind KD, QualType UnderlyingType)
+      : Type(PredefinedSugar, UnderlyingType->getCanonicalTypeInternal(),
+             TypeDependence::None) {
+    PredefinedSugarTypeBits.Kind = llvm::to_underlying(KD);
+  }
+
+public:
+  bool isSugared() const { return true; }
+
+  QualType desugar() const { return getCanonicalTypeInternal(); }
+
+  Kind getKind() const { return Kind(PredefinedSugarTypeBits.Kind); }
+
+  StringRef getName() const;
----------------
mizvekov wrote:

It might be worthwhile to consider returning an IdentifierInfo. These are 
uniqued, which makes it cheaper to compare them, and it increases commonality 
with other code that deals with these identifiers.

https://github.com/llvm/llvm-project/pull/143653
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to