1 // RUN: %clang_cc1 -verify=no-trigraphs -std=c23 %s 2 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu23 %s 3 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu17 %s 4 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu11 %s 5 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu99 %s 6 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu89 %s 7 // RUN: %clang_cc1 -verify=trigraphs -std=c17 %s 8 // RUN: %clang_cc1 -verify=trigraphs -std=c11 %s 9 // RUN: %clang_cc1 -verify=trigraphs -std=c99 %s 10 // RUN: %clang_cc1 -verify=trigraphs -std=c89 %s 11 // RUN: %clang_cc1 -verify=trigraphs -std=c23 -ftrigraphs %s 12 13 /* WG14 N2940: Clang 18 14 * Removing trigraphs??! 15 */ 16 17 // Trigraphs are enabled by default in any conforming C mode before C23, but 18 // are otherwise disabled (in all GNU modes, and in C23 or later). 19 // The ??= trigraph, if supported, will become the # character, which is a null 20 // preprocessor directive that does nothing. 21 22 ??= 23 // no-trigraphs-warning@-1 {{trigraph ignored}} \ 24 no-trigraphs-error@-1 {{expected identifier or '('}} \ 25 trigraphs-warning@-1 {{trigraph converted to '#' character}} 26 27