@@ -76,6 +76,25 @@ extern "C" char* test_memchr(const char arg[32]) {
76
76
// LLVM: ret ptr [[RET]]
77
77
}
78
78
79
+ extern " C" wchar_t * test_wmemchr (const wchar_t *wc) {
80
+ return __builtin_wmemchr (wc, 257u , 32 );
81
+
82
+ // CIR-LABEL: test_wmemchr
83
+ // CIR: [[PATTERN:%.*]] = cir.const #cir.int<257> : !u32i
84
+ // CIR: [[LEN:%.*]] = cir.const #cir.int<32> : !s32i
85
+ // CIR: [[LEN_U64:%.*]] = cir.cast(integral, [[LEN]] : !s32i), !u64i
86
+ // CIR: cir.call @wmemchr({{%.*}}, [[PATTERN]], [[LEN_U64]]) : (!cir.ptr<!u32i>, !u32i, !u64i) -> !cir.ptr<!u32i>
87
+
88
+ // LLVM: {{.*}}@test_wmemchr(ptr{{.*}}[[ARG:%.*]])
89
+ // LLVM: [[TMP0:%.*]] = alloca ptr, i64 1, align 8
90
+ // LLVM: store ptr [[ARG]], ptr [[TMP0]], align 8
91
+ // LLVM: [[SRC:%.*]] = load ptr, ptr [[TMP0]], align 8
92
+ // LLVM: [[RES:%.*]] = call ptr @wmemchr(ptr [[SRC]], i32 257, i64 32)
93
+ // LLVM: store ptr [[RES]], ptr [[RET_P:%.*]], align 8
94
+ // LLVM: [[RET:%.*]] = load ptr, ptr [[RET_P]], align 8
95
+ // LLVM: ret ptr [[RET]]
96
+ }
97
+
79
98
extern " C" void *test_return_address (void ) {
80
99
return __builtin_return_address (1 );
81
100
0 commit comments