| // Copyright 2018 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Failed to resolve typedefs consistently. |
| // No runtime test; just make sure it compiles. |
| // In separate directory to isolate #pragma GCC diagnostic. |
| |
| package issue27340 |
| |
| // We use the #pragma to avoid a compiler warning about incompatible |
| // pointer types, because we generate code passing a struct ptr rather |
| // than using the typedef. This warning is expected and does not break |
| // a normal build. |
| // We can only disable -Wincompatible-pointer-types starting with GCC 5. |
| |
| // #if __GNU_MAJOR__ >= 5 |
| // |
| // #pragma GCC diagnostic ignored "-Wincompatible-pointer-types" |
| // |
| // typedef struct { |
| // int a; |
| // } issue27340Struct, *issue27340Ptr; |
| // |
| // static void issue27340CFunc(issue27340Ptr p) {} |
| // |
| // #else /* _GNU_MAJOR_ < 5 */ |
| // |
| // typedef struct { |
| // int a; |
| // } issue27340Struct; |
| // |
| // static issue27340Struct* issue27340Ptr(issue27340Struct* p) { return p; } |
| // |
| // static void issue27340CFunc(issue27340Struct *p) {} |
| // #endif /* _GNU_MAJOR_ < 5 */ |
| import "C" |
| |
| func Issue27340GoFunc() { |
| var s C.issue27340Struct |
| C.issue27340CFunc(C.issue27340Ptr(&s)) |
| } |