/*      $NetBSD: msg_215.c,v 1.13 2023/07/07 19:45:22 rillig Exp $      */
# 3 "msg_215.c"

// Test for message: function '%s' implicitly declared to return int [215]

/*
* In traditional C and C90, it was possible to implicitly declare a function
* by just calling it, without defining a prototype first.  Such a function
* would then be defined as taking unspecified parameters and returning int.
*/

/* lint1-extra-flags: -X 351 */

struct str {
       int dummy;
};

/* ARGSUSED */
void
test(struct str str, const double *p_double)
{
       /* expect+1: error: function 'name' implicitly declared to return int [215] */
       name();

       /* expect+2: error: 'parenthesized' undefined [99] */
       /* expect+1: error: cannot call 'int', must be a function [149] */
       (parenthesized)();

       /* expect+2: error: type 'struct str' does not have member 'member' [101] */
       /* expect+1: error: cannot call 'int', must be a function [149] */
       str.member();

       /* https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html */
       __builtin_whatever(123, "string");
       __atomic_whatever(123, "string");
       /* obsolete but still in use, as of 2021 */
       __sync_whatever(123, "string");

       /* https://software.intel.com/sites/landingpage/IntrinsicsGuide/ */
       _mm_load_sd(p_double);
}