Home | History | Annotate | Line # | Download | only in lint1
d_c99_complex_split.c revision 1.6
      1  1.6    rillig /*	$NetBSD: d_c99_complex_split.c,v 1.6 2021/04/09 21:07:39 rillig Exp $	*/
      2  1.3    rillig # 3 "d_c99_complex_split.c"
      3  1.3    rillig 
      4  1.5    rillig /*
      5  1.5    rillig  * Checks that the real and imaginary parts of a complex number can be
      6  1.5    rillig  * accessed (since C99).
      7  1.5    rillig  */
      8  1.5    rillig 
      9  1.4    rillig int
     10  1.4    rillig b(double a)
     11  1.4    rillig {
     12  1.2  christos 	return a == 0;
     13  1.2  christos }
     14  1.4    rillig 
     15  1.4    rillig void
     16  1.4    rillig a(void)
     17  1.4    rillig {
     18  1.4    rillig 	double _Complex z = 0;
     19  1.4    rillig 	if (b(__real__ z) && b(__imag__ z))
     20  1.4    rillig 		return;
     21  1.1  christos }
     22  1.6    rillig 
     23  1.6    rillig void sink(double _Complex);
     24  1.6    rillig 
     25  1.6    rillig void
     26  1.6    rillig set_complex_complete(double re, double im)
     27  1.6    rillig {
     28  1.6    rillig 	double _Complex c;
     29  1.6    rillig 
     30  1.6    rillig 	__real__ c = re; /* FIXME *//* expect: may be used before set */
     31  1.6    rillig 	__imag__ c = im;
     32  1.6    rillig 	sink(c);
     33  1.6    rillig }
     34  1.6    rillig 
     35  1.6    rillig void
     36  1.6    rillig set_complex_only_real(double re)
     37  1.6    rillig {
     38  1.6    rillig 	double _Complex c;
     39  1.6    rillig 
     40  1.6    rillig 	__real__ c = re; /* FIXME *//* expect: may be used before set */
     41  1.6    rillig 	/* __imag__ c is left uninitialized */
     42  1.6    rillig 	sink(c);		/* XXX: may be used before set */
     43  1.6    rillig }
     44  1.6    rillig 
     45  1.6    rillig void
     46  1.6    rillig set_complex_only_imag(double im)
     47  1.6    rillig {
     48  1.6    rillig 	double _Complex c;
     49  1.6    rillig 
     50  1.6    rillig 	/* __real__ c is left uninitialized */
     51  1.6    rillig 	__imag__ c = im; /* FIXME *//* expect: may be used before set */
     52  1.6    rillig 	sink(c);		/* XXX: may be used before set */
     53  1.6    rillig }
     54