[clang] [Clang] Introduce OverflowBehaviorType for fine-grained overflow control (PR #148914)

Justin Stitt via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 25 15:53:54 PDT 2025


================
@@ -6660,6 +6672,51 @@ class BTFTagAttributedType : public Type, public llvm::FoldingSetNode {
   }
 };
 
+class OverflowBehaviorType : public Type, public llvm::FoldingSetNode {
+public:
+  enum OverflowBehaviorKind { Wrap, NoWrap };
+
+private:
+  friend class ASTContext; // ASTContext creates these
+
+  QualType UnderlyingType;
+  OverflowBehaviorKind BehaviorKind;
+
+  OverflowBehaviorType(QualType Canon, QualType Underlying,
+                       OverflowBehaviorKind Kind);
+
+public:
+  QualType getUnderlyingType() const { return UnderlyingType; }
+  OverflowBehaviorKind getBehaviorKind() const { return BehaviorKind; }
+
+  bool isWrapKind() const { return BehaviorKind == OverflowBehaviorKind::Wrap; }
+  bool isNoWrapKind() const {
+    return BehaviorKind == OverflowBehaviorKind::NoWrap;
+  }
+
+  OverflowBehaviorKind setBehaviorKind(OverflowBehaviorKind Kind) {
+    BehaviorKind = Kind;
+    return BehaviorKind;
+  }
----------------
JustinStitt wrote:

fixed with [`04af8bf`](https://github.com/llvm/llvm-project/pull/148914/commits/04af8bf6e9620c71673a435d3b2eebccd7db3682)

https://github.com/llvm/llvm-project/pull/148914


More information about the cfe-commits mailing list