[clang] [CIR] Function calls with aggregate arguments and return values (PR #143377)

Andy Kaylor via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 9 13:04:50 PDT 2025


================
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
+// RUN: FileCheck --input-file=%t.cir %s -check-prefix=CIR
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -Wno-unused-value -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck --input-file=%t-cir.ll %s -check-prefix=LLVM
+
+struct S {
+  int x;
+  int y;
+};
+
+void f1(struct S);
+void f2() {
+  struct S s;
+  f1(s);
+}
+
+// CIR-LABEL: cir.func @f2()
+// CIR:         %[[#s:]] = cir.load align(4) %{{.+}} : !cir.ptr<!rec_S>, !rec_S
----------------
andykaylor wrote:

```suggestion
// CIR:         %[[S:.*]] = cir.load align(4) %{{.+}} : !cir.ptr<!rec_S>, !rec_S
```
I prefer not to use '#' matches. It prevents the same variable name from being used elsewhere to match a non-numeric pattern. Use of all caps for lit variable names also makes them easier to spot.

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


More information about the cfe-commits mailing list