[clang] [CIR] Upstream ExtractMemberOp (PR #173512)

Amr Hesham via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 26 06:08:52 PST 2025


================
@@ -76,4 +76,17 @@ module  {
 // CHECK: cir.func @structs() {
 // CHECK:     %0 = cir.alloca !cir.ptr<!rec_Sc>, !cir.ptr<!cir.ptr<!rec_Sc>>, ["sc", init]
 // CHECK:     %1 = cir.alloca !cir.ptr<!rec_U>, !cir.ptr<!cir.ptr<!rec_U>>, ["u", init]
+
+cir.func @struct_extract_member_test() {
+    %0 = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<2> : !u16i, #cir.int<3> : !u32i}> : !rec_Sc
+    %1 = cir.extract_member %0[0] : !rec_Sc -> !u8i
+    cir.return
+}
+
+// CHECK: cir.func{{.*}} @struct_extract_member_test() {
+// CHECK: %0 = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<2> : !u16i, #cir.int<3> : !u32i}> : !rec_Sc
+// CHECK: %1 = cir.extract_member %0[0] : !rec_Sc -> !u8i
----------------
AmrDeveloper wrote:

```suggestion
// CHECK: %[[RECORD:.*]] = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<2> : !u16i, #cir.int<3> : !u32i}> : !rec_Sc
// CHECK: %[[ELEM_0:.*]] = cir.extract_member %[[RECORD]][0] : !rec_Sc -> !u8i
```

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


More information about the cfe-commits mailing list