<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60269>60269</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Imaginary types are not supported, violating ISO C Annex G
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Keith-S-Thompson
</td>
</tr>
</table>
<pre>
This program:
```
#include <stdio.h>
#include <complex.h>
int main(void) {
#ifdef __STDC_IEC_559_COMPLEX__
printf("__STDC_IEC_559_COMPLEX__ is defined as %d\n", __STDC_IEC_559_COMPLEX__);
#else
printf("__STDC_IEC_559_COMPLEX__ is NOT defined\n");
#endif
#ifdef _Imaginary_I
printf("Imaginary types are supported\n");
#else
printf("Imaginary types are NOT supported\n");
#endif
}
```
compiled with `clang -Wall -Wextra -std=c11 -pedantic-errors` (llvm version 15.0.0) produces this output:
```
__STDC_IEC_559_COMPLEX__ is defined as 1
Imaginary types are NOT supported
```
ISO C Annex G was informative in C99, but was made normative in C11.
Imaginary types are optional in C11, but are mandatory for any
implementation that predefines `__STDC_IEC_559_COMPLEX__`.
(Complex types were made optional in C11, but that's not relevant here.)
To conform to C11 (and later), clang should either implement imaginary types
as defined in Annex G or remove the definition of `__STDC_IEC_559_COMPLEX__`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVF1r6zgQ_TXyy2Bjy7ETP_jhXqdZyn50oYG7b0GxxrEWWTLSOG3-_aI4bdoloYVAMHNmznycI-G9OhjEmhU_WbGOxES9dfXvqKiPn-Ntb4fRWxPtrTzV2155GJ09ODGw_AdL1yz9wcr08ps_ea5MqyeJwPLGk1Q26Vn-cCva2mHU-PohrgzBIJRhfHW0SjJeAVv-vOZ2EjvY7Z6362b3-NDsiqLaNU9__v3Hwz-73QwDABidMtQxvmKc30OD8iCxUwYlCA-MF5IVjWGcM97c5-AVy68NofZ4of0u519P2zfed77PNY1U3eXrf4M_DuKgjHCn3ePtYd8BQKcRPQiH4KdxtI7u0l1H-Eax0P1XBT_0v1zfFEk4vNIo4UVRD6xMWy3MAeJfQmuIf-ErOQGxJ8nydZtlEI8ohSHVxuicdZ6VKTC-0vo4wBGdV9ZAViRpkgbFjM7KqUUPFPRqJxonuifXb6ojm9Ffb-SmJebc5ydo4Icx-Aq_wYvwoExn3SBIHRGUgaaqgvL2E52jg5AI5hMgyxK434gdSVkj9AX6ViuEBmGkIOtO0FkHwpwubgv2G9CQCJlAvSAYHc5z-3CXuzYo0-Tt4KtmtvGllRc8E8q7DQUaxpcejCVwqPEoDEGPDpOgpA8r21po7XlJQDaUCEcXRoIWhC6AeQOzdHxvJy0hPFvo4H0wUJ8XNdcV19sq834S68DhYI8I1OMMUOe92O6rVUSyzmWVVyLCOiuXi6JK-bKK-jpbtAu-RC4x5Xm1KsSyyrDN9_miy_ddVkSq5inP04wvsqpYFlVSZnvZLlZVJ9Myz7uSLVIchNJJEHti3SFS3k9Ylykvq0iLPWp_frw5N_gC52DwZLGOXB1y4v108GyRauXJX6uQIo31LR2Fs1wFzRs4KqsFKXOATxqOJqfrnmj0wVx8w_jmoKif9klrB8Y3geryF4_O_ostMb45N-gZ35wH-C8AAP__kHL_5w">