[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