Sorry, bad format.



 #define G(x) _Generic((x),int*:"int*",void*:"void*")


 int printf(const char*, ...);


 int main()
 {
         int y = 0;
         const char *s = G(1?(void*)(y*0LL):&y);
         printf("%s\n", s);
 }








 




------------------ Original ------------------
From:                                                                           
                                             "ntysdd"                           
                                                         <nty...@qq.com&gt;;
Date:&nbsp;Tue, Aug 16, 2022 08:32 PM
To:&nbsp;"tinycc-devel"<tinycc-devel@nongnu.org&gt;;

Subject:&nbsp;miscompilation for code snippet



TCC gets different result than gcc or clang for code below
&amp;gt;
&amp;gt; #define G(x) _Generic((x),int*:"int*",void*:"void*")
&amp;gt;
&amp;gt; int printf(const char*, ...);
&amp;gt;
&amp;gt; int main()
&amp;gt; {
&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y = 0;
&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const char *s = 
G(1?(void*)(y*0LL):&amp;amp;y);
&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s\n", s);
&amp;gt; }

expected
void*

actual
int*

Similar constructs are used in Linux kernel.
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to