================
@@ -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