[llvm] [SandboxIR] Implement BitCastInst (PR #101227)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 30 14:50:40 PDT 2024


================
@@ -1386,6 +1390,26 @@ class PtrToIntInst final : public CastInst {
 #endif // NDEBUG
 };
 
+class BitCastInst : public CastInst {
+public:
+  static Value *create(Value *Src, Type *DestTy, BBIterator WhereIt,
+                       BasicBlock *WhereBB, Context &Ctx,
+                       const Twine &Name = "");
+  static Value *create(Value *Src, Type *DestTy, Instruction *InsertBefore,
+                       Context &Ctx, const Twine &Name = "");
+  static Value *create(Value *Src, Type *DestTy, BasicBlock *InsertAtEnd,
+                       Context &Ctx, const Twine &Name = "");
+
+  static bool classof(const Value *From) {
+    return isa<Instruction>(From) &&
----------------
vporpo wrote:

It's not, but `From` could be in a multi-Instruction. And it is theoretically possible to have two separate multi-instructions that contain `llvm::BitCastInst`s as their `Val` values. Which is why I think that using `From->Val`'s class is not the right approach. It is safer to get the SandboxIR instruction that points to `From->Val` and get it's opcode.

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


More information about the llvm-commits mailing list