Nathan =?utf-8?q?Gau=C3=ABr?= <[email protected]>,
Nathan =?utf-8?q?Gau=C3=ABr?= <[email protected]>,
Nathan =?utf-8?q?Gau=C3=ABr?= <[email protected]>,
Nathan =?utf-8?q?Gau=C3=ABr?= <[email protected]>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/[email protected]>


================
@@ -1804,6 +1804,47 @@ class ConvergenceControlInst : public IntrinsicInst {
   CreateLoop(BasicBlock &BB, ConvergenceControlInst *Parent);
 };
 
+class StructuredGEPInst : public IntrinsicInst {
+public:
+  static bool classof(const IntrinsicInst *I) {
+    return I->getIntrinsicID() == Intrinsic::structured_gep;
+  }
+
+  static bool classof(const Value *V) {
+    return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
+  }
+
+  Value *getPointerOperand() const { return getOperand(1); }
+
+  Type *getBaseType() const {
+    return getParamAttr(0, Attribute::ElementType).getValueAsType();
+  }
+
+  unsigned getIndicesCount() const { return getNumOperands() - 2; }
+
+  Type *getResultElementType() const {
+    Type *CurrentType = getBaseType();
+    for (unsigned I = 0; I < getIndicesCount(); I++) {
+      Value *V = getOperand(I + 1);
+      ConstantInt *CI = dyn_cast<ConstantInt>(V);
+      if (!CI)
+        return nullptr;
----------------
Flakebi wrote:

This check be in the StructType branch and it should be an assert instead.

https://github.com/llvm/llvm-project/pull/176145
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to