https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85153

--- Comment #2 from Fabio Alemagna <falemagn at gmail dot com> ---
And removing the exclamation mark from the if condition actually makes it work
again, but only if the B and E macro are wrapped within the Y() macro,
otherwise it still complains, now indicating the parenthesis as the problem:

    #define X6() B if (x) E
    int test9(int val) {
        switch (val) {
                    X6() {
            case 1:     return 10;
                    }
        }

        return 0;
    }

pragmatest.cpp: In function ‘int test9(int)’:
pragmatest.cpp:96:25: warning: statement will never be executed
[-Wswitch-unreachable]
     #define X6() B if (x) E
                         ^
pragmatest.cpp:99:21: note: in expansion of macro ‘X6’
                     X6() {
                     ^~

Reply via email to