================
@@ -445,3 +448,54 @@ void conflicting_state_attrs_preserves_out_zt0(void)
__arm_preserves("zt0") __ar
// expected-cpp-error@+2 {{conflicting attributes for state 'zt0'}}
// expected-error@+1 {{conflicting attributes for state 'zt0'}}
void conflicting_state_attrs_preserves_inout_zt0(void) __arm_preserves("zt0")
__arm_inout("zt0");
+
----------------
sdesmalen-arm wrote:
I just wrote some tests manually with all combinations of n (normal), s
(streaming), sc (streaming-compatible) and see the current behaviour isn't
entirely correct. See the FIXME's below.
It also shows that there isn't enough test-coverage in your patch.
```
typedef __SVInt32_t sv_ty;
void n(sv_ty arg);
void sc(sv_ty arg) __arm_streaming_compatible;
void s(sv_ty arg) __arm_streaming;
void test_n_to_n(sv_ty arg) { n(arg); }
void test_n_to_sc(sv_ty arg) { sc(arg); }
void test_n_to_s(sv_ty arg) { s(arg); } // expect a diagnostic
void test_sc_to_n(sv_ty arg) __arm_streaming_compatible { n(arg); } //
expect a diagnostic
void test_sc_to_sc(sv_ty arg) __arm_streaming_compatible { sc(arg); }
void test_sc_to_s(sv_ty arg) __arm_streaming_compatible { s(arg); } //
expect a diagnostic (FIXME: missing diagnostic)
void test_s_to_n(sv_ty arg) __arm_streaming { n(arg); } // expect a diagnostic
void test_s_to_sc(sv_ty arg) __arm_streaming { sc(arg); } // FIXME: should
not see a diagnostic for this case.
void test_s_to_s(sv_ty arg) __arm_streaming { s(arg); }
__arm_locally_streaming void ls_arg(sv_ty arg) { } // expect a diagnostic
__arm_locally_streaming sv_ty ls_ret() { return {}; } // expect a diagnostic
```
https://github.com/llvm/llvm-project/pull/79842
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits