37 lines · cpp
1// RUN: %clang_cc1 -triple=i386-pc-solaris2.11 -w -emit-llvm %s -o - | FileCheck %s2 3extern "C" {4 struct statvfs64 {5 int f;6 };7#pragma redefine_extname statvfs64 statvfs8 int statvfs64(struct statvfs64 *);9}10 11void some_func() {12 struct statvfs64 st;13 statvfs64(&st);14// Check that even if there is a structure with redefined name before the15// pragma, subsequent function name redefined properly. PR5172, Comment 11.16// CHECK: call i32 @statvfs(ptr noundef %st)17}18 19// This is a case when redefenition is deferred *and* we have a local of the20// same name. PR23923.21#pragma redefine_extname foo bar22int f() {23 int foo = 0;24 return foo;25}26extern "C" {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 be32// applied to C++.33#pragma redefine_extname foo_cpp bar_cpp34extern int foo_cpp() { return 1; }35// CHECK-NOT: define{{.*}} i32 @bar_cpp()36 37