Home | History | Annotate | Line # | Download | only in lint1
      1  1.8  rillig /*	$NetBSD: op_colon.c,v 1.8 2024/01/28 08:17:27 rillig Exp $	*/
      2  1.1  rillig # 3 "op_colon.c"
      3  1.1  rillig 
      4  1.1  rillig /*
      5  1.1  rillig  * Test handling of the operator ':', as part of the '?:'.
      6  1.1  rillig  */
      7  1.1  rillig 
      8  1.7  rillig /* lint1-extra-flags: -p -X 351 */
      9  1.1  rillig 
     10  1.5  rillig struct canary {
     11  1.4  rillig 	int member;
     12  1.4  rillig };
     13  1.4  rillig 
     14  1.4  rillig void
     15  1.5  rillig sink(struct canary);
     16  1.1  rillig 
     17  1.1  rillig void
     18  1.1  rillig test_merge_qualifiers(_Bool cond, int *p, const int *c, volatile int *v,
     19  1.1  rillig 		      const volatile int *cv)
     20  1.1  rillig {
     21  1.4  rillig 	/* expect+1: ... 'pointer to int' ... */
     22  1.1  rillig 	sink(cond ? p : p);
     23  1.3  rillig 	/* expect+1: ... 'pointer to const int' ... */
     24  1.2  rillig 	sink(cond ? p : c);
     25  1.3  rillig 	/* expect+1: ... 'pointer to volatile int' ... */
     26  1.2  rillig 	sink(cond ? p : v);
     27  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     28  1.2  rillig 	sink(cond ? p : cv);
     29  1.2  rillig 
     30  1.3  rillig 	/* expect+1: ... 'pointer to const int' ... */
     31  1.2  rillig 	sink(cond ? c : p);
     32  1.3  rillig 	/* expect+1: ... 'pointer to const int' ... */
     33  1.2  rillig 	sink(cond ? c : c);
     34  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     35  1.2  rillig 	sink(cond ? c : v);
     36  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     37  1.2  rillig 	sink(cond ? c : cv);
     38  1.2  rillig 
     39  1.3  rillig 	/* expect+1: ... 'pointer to volatile int' ... */
     40  1.2  rillig 	sink(cond ? v : p);
     41  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     42  1.2  rillig 	sink(cond ? v : c);
     43  1.3  rillig 	/* expect+1: ... 'pointer to volatile int' ... */
     44  1.2  rillig 	sink(cond ? v : v);
     45  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     46  1.2  rillig 	sink(cond ? v : cv);
     47  1.2  rillig 
     48  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     49  1.2  rillig 	sink(cond ? cv : p);
     50  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     51  1.2  rillig 	sink(cond ? cv : c);
     52  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     53  1.2  rillig 	sink(cond ? cv : v);
     54  1.3  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     55  1.2  rillig 	sink(cond ? cv : cv);
     56  1.1  rillig }
     57  1.4  rillig 
     58  1.6  rillig /* null pointer constant + other pointer */
     59  1.6  rillig void
     60  1.6  rillig c99_6_5_15_p6(_Bool cond, const volatile double *cv_dp)
     61  1.6  rillig {
     62  1.8  rillig 	/* expect+1: ... 'pointer to const volatile double' ... */
     63  1.6  rillig 	sink(cond ? cv_dp : (void *)0);
     64  1.8  rillig 	/* expect+1: ... 'pointer to const volatile double' ... */
     65  1.6  rillig 	sink(cond ? (void *)0 : cv_dp);
     66  1.6  rillig }
     67  1.6  rillig 
     68  1.4  rillig void
     69  1.4  rillig c99_6_5_15_p8(
     70  1.4  rillig     _Bool cond,
     71  1.4  rillig     const void *c_vp,
     72  1.4  rillig     void *vp,
     73  1.4  rillig     const int *c_ip,
     74  1.4  rillig     volatile int *v_ip,
     75  1.4  rillig     int *ip,
     76  1.4  rillig     const char *c_cp
     77  1.4  rillig )
     78  1.4  rillig {
     79  1.8  rillig 	/* expect+1: ... 'pointer to const void' ... */
     80  1.4  rillig 	sink(cond ? c_vp : c_ip);
     81  1.8  rillig 	/* expect+1: ... 'pointer to const void' ... */
     82  1.4  rillig 	sink(cond ? c_ip : c_vp);
     83  1.4  rillig 
     84  1.8  rillig 	/* expect+1: ... 'pointer to volatile int' ... */
     85  1.4  rillig 	sink(cond ? v_ip : 0);
     86  1.8  rillig 	/* expect+1: ... 'pointer to volatile int' ... */
     87  1.4  rillig 	sink(cond ? 0 : v_ip);
     88  1.4  rillig 
     89  1.8  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     90  1.4  rillig 	sink(cond ? c_ip : v_ip);
     91  1.8  rillig 	/* expect+1: ... 'pointer to const volatile int' ... */
     92  1.4  rillig 	sink(cond ? v_ip : c_ip);
     93  1.4  rillig 
     94  1.8  rillig 	/* expect+1: ... 'pointer to const void' ... */
     95  1.4  rillig 	sink(cond ? vp : c_cp);
     96  1.8  rillig 	/* expect+1: ... 'pointer to const void' ... */
     97  1.4  rillig 	sink(cond ? c_cp : vp);
     98  1.4  rillig 
     99  1.8  rillig 	/* expect+1: ... 'pointer to const int' ... */
    100  1.4  rillig 	sink(cond ? ip : c_ip);
    101  1.8  rillig 	/* expect+1: ... 'pointer to const int' ... */
    102  1.4  rillig 	sink(cond ? c_ip : ip);
    103  1.4  rillig 
    104  1.8  rillig 	/* expect+1: ... 'pointer to void' ... */
    105  1.4  rillig 	sink(cond ? vp : ip);
    106  1.8  rillig 	/* expect+1: ... 'pointer to void' ... */
    107  1.4  rillig 	sink(cond ? ip : vp);
    108  1.4  rillig }
    109