================
@@ -84,4 +84,35 @@ Task<int> nonelidable() {
co_return 1;
}
+// CHECK-LABEL: define{{.*}} @_Z8addTasksO4TaskIiES1_{{.*}} {
+Task<int> addTasks([[clang::coro_must_await]] Task<int> &&t1, Task<int> &&t2) {
+ int i1 = co_await t1;
+ int i2 = co_await t2;
+ co_return i1 + i2;
+}
+
+// CHECK-LABEL: define{{.*}} @_Z10returnSamei{{.*}} {
+Task<int> returnSame(int i) {
+ co_return i;
+}
+
+// CHECK-LABEL: define{{.*}} @_Z21elidableWithMustAwaitv{{.*}} {
+Task<int> elidableWithMustAwait() {
+ // CHECK: call void @_Z10returnSamei(ptr {{.*}}, i32 noundef 2)
#[[ELIDE_SAFE]]
+ // CHECK-NOT: call void @_Z10returnSamei(ptr {{.*}}, i32 noundef 3)
#[[ELIDE_SAFE]]
----------------
vogelsgesang wrote:
Can we somehow turn this into a positive test? Negative tests can easily
regress, e.g. if something else in the line would change.
Can we use a `$` (or some other mechanism) to check for the end of the line,
and there by explicitly check that a call to `_Z10returnSamei(ptr {{.*}}, i32
noundef 3)` does exist, but does not have the ELIDE_SAFE annotation?
```suggestion
// CHECK: call void @_Z10returnSamei(ptr {{.*}}, i32 noundef 3)$
```
https://github.com/llvm/llvm-project/pull/108474
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits