root/tests/usr.bin/xlint/lint1/gcc_statement_expression.c
/*      $NetBSD: gcc_statement_expression.c,v 1.3 2023/07/15 14:54:31 rillig Exp $      */
# 3 "gcc_statement_expression.c"

/*
 * Tests for the GCC extension 'statement expressions', which allows a block of
 * statements to occur as part of an expression.
 */


// Ensure that the inner types are accessible from outside the block.
// Depending on the memory management strategy, the inner types might be freed
// too early.
static inline int
use_inner_type_from_outside(void)
{
        int x = ({
                struct outer {
                        struct inner {
                                int member;
                        } inner;
                } outer = { { 3 } };
                outer;
        }).inner.member;

        return x;
}