|  | // RUN: %clang_cc1 -triple=i386-pc-solaris2.11 -w -emit-llvm %s -o - | FileCheck %s | 
|  |  | 
|  | #pragma redefine_extname fake real | 
|  | #pragma redefine_extname name alias | 
|  |  | 
|  | extern int fake(void); | 
|  |  | 
|  | int name; | 
|  |  | 
|  | // __PRAGMA_REDEFINE_EXTNAME should be defined.  This will fail if it isn't... | 
|  | int fish(void) { return fake() + __PRAGMA_REDEFINE_EXTNAME + name; } | 
|  | // Check that the call to fake() is emitted as a call to real() | 
|  | // CHECK:   call i32 @real() | 
|  | // Check that this also works with variables names | 
|  | // CHECK:   load i32, ptr @alias | 
|  |  | 
|  | // This is a case when redefenition is deferred *and* we have a local of the | 
|  | // same name. PR23923. | 
|  | #pragma redefine_extname foo bar | 
|  | int f(void) { | 
|  | int foo = 0; | 
|  | return foo; | 
|  | } | 
|  | extern int foo(void) { return 1; } | 
|  | // CHECK: define{{.*}} i32 @bar() | 
|  |  | 
|  | // Check that pragma redefine_extname applies to external declarations only. | 
|  | #pragma redefine_extname foo_static bar_static | 
|  | static int foo_static(void) { return 1; } | 
|  | int baz(void) { return foo_static(); } | 
|  | // CHECK-NOT: call i32 @bar_static() | 
|  |  | 
|  | // Check that pragma redefine_extname applies to builtin functions. | 
|  | typedef unsigned long size_t; | 
|  | extern void *memcpy(void *, const void *, size_t); | 
|  | #pragma redefine_extname memcpy __GI_memcpy | 
|  | void *test_memcpy(void *dst, const void *src, size_t n) { return memcpy(dst, src, n); } | 
|  | // CHECK: call ptr @__GI_memcpy( |