// RUN: cir-opt %s -verify-diagnostics -split-input-file !s8i = !cir.int module { // Should not memcpy with invalid length type. cir.func @invalid_memcpy_len(%arg0 : !cir.ptr, %arg1 : !s8i) { // expected-error@+1 {{'cir.libc.memcpy' op operand #2 must be fundamental unsigned integer type, but got '!cir.int'}} cir.libc.memcpy %arg1 bytes from %arg0 to %arg0 : !s8i, !cir.ptr -> !cir.ptr cir.return } } // ----- !s8i = !cir.int !u32i = !cir.int module { // Should not memcpy non-void pointers. cir.func @invalid_memcpy_pointer_0(%arg0 : !cir.ptr, %arg1 : !u32i) { // expected-error@+1 {{'cir.libc.memcpy' op operand #0 must be pointer to void type, but got '!cir.ptr>'}} cir.libc.memcpy %arg1 bytes from %arg0 to %arg0 : !u32i, !cir.ptr -> !cir.ptr cir.return } } // ----- !s8i = !cir.int !u32i = !cir.int module { // Should not memcpy non-void pointers. cir.func @invalid_memcpy_pointer_1(%arg0 : !cir.ptr, %arg1 : !cir.ptr, %arg2 : !u32i) { // expected-error@+1 {{'cir.libc.memcpy' op operand #1 must be pointer to void type, but got '!cir.ptr>'}} cir.libc.memcpy %arg2 bytes from %arg1 to %arg0 : !u32i, !cir.ptr -> !cir.ptr cir.return } }