================
@@ -46,35 +46,35 @@ struct copy_ctor {
   copy_ctor(copy_ctor const &);
 };
 test(copy_ctor);
-// CHECK: define void @_Z7forward9copy_ctor(ptr dead_on_unwind noalias 
{{[^,]*}} sret(%struct.copy_ctor) align 8 %{{.*}}, ptr nonnull align 8 
dead_on_return %{{.*}})
+// CHECK: define void @_Z7forward9copy_ctor(ptr dead_on_unwind noalias 
{{[^,]*}} sret(%struct.copy_ctor) align 8 %{{.*}}, ptr nofree align 8 
dead_on_return dereferenceable(8) %{{.*}})
 //
 // CHECK: declare ptr @_ZN9copy_ctorC1ERKS_(ptr {{[^,]*}} returned {{[^,]*}}, 
ptr nonnull align 8 dereferenceable(8))
 //
 // CHECK: define void @_Z14test_copy_ctorv()
 // CHECK: %[[tmp:.*]] = alloca %struct.copy_ctor, align 8
 // CHECK: call void @_Z13def_copy_ctorv(ptr dead_on_unwind nonnull writable 
sret(%struct.copy_ctor) align 8 %[[tmp]])
-// CHECK: call void @_Z3use9copy_ctor(ptr nonnull align 8 dead_on_return 
%[[tmp]])
+// CHECK: call void @_Z3use9copy_ctor(ptr nofree align 8 dead_on_return 
dereferenceable(8) %[[tmp]])
 // CHECK: ret void
 //
-// CHECK: declare void @_Z3use9copy_ctor(ptr align 8 dead_on_return)
+// CHECK: declare void @_Z3use9copy_ctor(ptr nofree align 8 dead_on_return 
dereferenceable(8))
 // CHECK: declare void @_Z13def_copy_ctorv(ptr dead_on_unwind writable 
sret(%struct.copy_ctor) align 8)
 
 struct __attribute__((aligned(16))) aligned_copy_ctor {
   double d, e;
   aligned_copy_ctor(aligned_copy_ctor const &);
 };
 test(aligned_copy_ctor);
-// CHECK: define void @_Z7forward17aligned_copy_ctor(ptr dead_on_unwind 
noalias {{[^,]*}} sret(%struct.aligned_copy_ctor) align 16 %{{.*}}, ptr nonnull 
align 16 dead_on_return %{{.*}})
+// CHECK: define void @_Z7forward17aligned_copy_ctor(ptr dead_on_unwind 
noalias {{[^,]*}} sret(%struct.aligned_copy_ctor) align 16 %{{.*}}, ptr nofree 
align 16 dead_on_return dereferenceable(16) %{{.*}})
 //
 // CHECK: declare ptr @_ZN17aligned_copy_ctorC1ERKS_(ptr {{[^,]*}} returned 
{{[^,]*}}, ptr nonnull align 16 dereferenceable(16))
 //
 // CHECK: define void @_Z22test_aligned_copy_ctorv()
 // CHECK: %[[tmp:.*]] = alloca %struct.aligned_copy_ctor, align 16
 // CHECK: call void @_Z21def_aligned_copy_ctorv(ptr dead_on_unwind nonnull 
writable sret(%struct.aligned_copy_ctor) align 16 %[[tmp]])
-// CHECK: call void @_Z3use17aligned_copy_ctor(ptr nonnull align 16 
dead_on_return %[[tmp]])
+// CHECK: call void @_Z3use17aligned_copy_ctor(ptr nofree align 16 
dead_on_return dereferenceable(16) %[[tmp]])
----------------
sivakusayan wrote:

It's confusing why `nonnull` was removed here, but apparently the test file 
runs with optimizations on:

```
 RUN: %clang_cc1 -no-enable-noundef-analysis -O1 -triple wasm32-unknown-unknown 
-emit-llvm -o - %s \
```

I think it's weird for a codegen test to do that, but I'm guessing I'm missing 
some context.

https://github.com/llvm/llvm-project/pull/213347
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to