| // REQUIRES: !system-windows | 
 | // | 
 | // RUN: rm -rf %t | 
 | // RUN: split-file %s %t | 
 | // RUN: cd %t | 
 | // | 
 | // RUN: %clang_cc1 -std=c++20 -O3 %t/a.cppm -emit-module-interface -o %t/a.pcm | 
 | // RUN: %clang_cc1 -std=c++20 -O3 %t/test.cc -fmodule-file=a=%t/a.pcm \ | 
 | // RUN:   -emit-llvm -o - | FileCheck %t/test.cc | 
 |  | 
 | //--- memmove.h | 
 | typedef long unsigned int size_t; | 
 | extern "C" void *memmove (void *__dest, const void *__src, size_t __n) | 
 |      throw () __attribute__ ((__nonnull__ (1, 2))); | 
 | extern "C" __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * | 
 |  memmove (void *__dest, const void *__src, size_t __len) throw () | 
 | { | 
 |   return __builtin_memmove(__dest, __src, __len); | 
 | } | 
 |  | 
 | //--- a.cppm | 
 | module; | 
 | #include "memmove.h" | 
 | export module a; | 
 | export using ::memmove; | 
 |  | 
 | //--- test.cc | 
 | import a; | 
 |  | 
 | void test() { | 
 |   int a, b; | 
 |   unsigned c = 0; | 
 |   memmove(&a, &b, c); | 
 | } | 
 |  | 
 | // CHECK-NOT: memmove |