================
@@ -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;
+ }
----------------
mizvekov wrote:
```suggestion
```
Type nodes are supposed to be immutable, otherwise this would play badly with
uniquing. It would be preferable to only allow to specify this on construction.
https://github.com/llvm/llvm-project/pull/148914
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits