xref: /llvm-project/clang/test/C/drs/dr158.c (revision 313f9cd81d01a3a63d3cdc94ee13b21117b2b3bd)
1 /* RUN: %clang_cc1 -std=c89 -pedantic -Wno-c11-extensions -verify -emit-llvm -o -  %s | FileCheck %s
2    RUN: %clang_cc1 -std=c99 -pedantic -Wno-c11-extensions -verify -emit-llvm -o -  %s | FileCheck %s
3    RUN: %clang_cc1 -std=c11 -pedantic -verify -emit-llvm -o -  %s | FileCheck %s
4    RUN: %clang_cc1 -std=c17 -pedantic -verify -emit-llvm -o -  %s | FileCheck %s
5    RUN: %clang_cc1 -std=c2x -pedantic -verify -emit-llvm -o -  %s | FileCheck %s
6  */
7 
8 /* expected-no-diagnostics */
9 
10 /* WG14 DR158: yes
11  * Null pointer conversions
12  */
dr158(void)13 void dr158(void) {
14   int Val = (void *)0 == (int *)0;
15   /* CHECK: %[[VAL:.+]] = alloca i32
16      CHECK: store i32 1, ptr %[[VAL]]
17    */
18 
19   (void)_Generic((int *)0, int * : 1); /* picks correct association */
20   (void)_Generic((1 ? 0 : (int *)0), int * : 1); /* picks correct association */
21 }
22 
23