1*e167f753SChuanqi Xu// REQUIRES: !system-windows 2*e167f753SChuanqi Xu// 3*e167f753SChuanqi Xu// RUN: rm -rf %t 4*e167f753SChuanqi Xu// RUN: split-file %s %t 5*e167f753SChuanqi Xu// RUN: cd %t 6*e167f753SChuanqi Xu// 7*e167f753SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -O3 %t/a.cppm -emit-module-interface -o %t/a.pcm 8*e167f753SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -O3 %t/test.cc -fmodule-file=a=%t/a.pcm \ 9*e167f753SChuanqi Xu// RUN: -emit-llvm -o - | FileCheck %t/test.cc 10*e167f753SChuanqi Xu 11*e167f753SChuanqi Xu//--- memmove.h 12*e167f753SChuanqi Xutypedef long unsigned int size_t; 13*e167f753SChuanqi Xuextern "C" void *memmove (void *__dest, const void *__src, size_t __n) 14*e167f753SChuanqi Xu throw () __attribute__ ((__nonnull__ (1, 2))); 15*e167f753SChuanqi Xuextern "C" __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 16*e167f753SChuanqi Xu memmove (void *__dest, const void *__src, size_t __len) throw () 17*e167f753SChuanqi Xu{ 18*e167f753SChuanqi Xu return __builtin_memmove(__dest, __src, __len); 19*e167f753SChuanqi Xu} 20*e167f753SChuanqi Xu 21*e167f753SChuanqi Xu//--- a.cppm 22*e167f753SChuanqi Xumodule; 23*e167f753SChuanqi Xu#include "memmove.h" 24*e167f753SChuanqi Xuexport module a; 25*e167f753SChuanqi Xuexport using ::memmove; 26*e167f753SChuanqi Xu 27*e167f753SChuanqi Xu//--- test.cc 28*e167f753SChuanqi Xuimport a; 29*e167f753SChuanqi Xu 30*e167f753SChuanqi Xuvoid test() { 31*e167f753SChuanqi Xu int a, b; 32*e167f753SChuanqi Xu unsigned c = 0; 33*e167f753SChuanqi Xu memmove(&a, &b, c); 34*e167f753SChuanqi Xu} 35*e167f753SChuanqi Xu 36*e167f753SChuanqi Xu// CHECK-NOT: memmove 37