1 // RUN: %clang_cc1 -triple=i386-pc-solaris2.11 -w -emit-llvm %s -o - | FileCheck %s 2 3 extern "C" { 4 struct statvfs64 { 5 int f; 6 }; 7 #pragma redefine_extname statvfs64 statvfs 8 int statvfs64(struct statvfs64 *); 9 } 10 some_func()11void some_func() { 12 struct statvfs64 st; 13 statvfs64(&st); 14 // Check that even if there is a structure with redefined name before the 15 // pragma, subsequent function name redefined properly. PR5172, Comment 11. 16 // CHECK: call i32 @statvfs(%struct.statvfs64* %st) 17 } 18 19 // This is a case when redefenition is deferred *and* we have a local of the 20 // same name. PR23923. 21 #pragma redefine_extname foo bar f()22int f() { 23 int foo = 0; 24 return foo; 25 } 26 extern "C" { foo()27 int foo() { return 1; } 28 // CHECK: define i32 @bar() 29 } 30 31 // Check that #pragma redefine_extname applies to C code only, and shouldn't be 32 // applied to C++. 33 #pragma redefine_extname foo_cpp bar_cpp foo_cpp()34extern int foo_cpp() { return 1; } 35 // CHECK-NOT: define i32 @bar_cpp() 36 37