// 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)) }