Loading

gcc bug

  1. #include <cstdio>
  2.  
  3. struct S
  4. {
  5.     void* get()
  6.     {
  7.         return NULL;
  8.     }
  9.  
  10.     ~S()
  11.     {
  12.         printf("fail\n");
  13.     }
  14. };
  15.  
  16.  
  17. void foo(void* x)
  18. {
  19.     printf("foo\n");
  20. }
  21.  
  22.  
  23. void testFunc(int len)
  24. {
  25.   S __tmpfordtor58;
  26.   bool __cond59;
  27.   bool __cond60;
  28.  
  29.       foo ((__cond60 = len > 1, __cond60) ? NULL : (__cond59 = len == 1, __cond59) ? S().get() : NULL);
  30.  
  31.       if (!__cond60)
  32.         {
  33.           if (__cond59)
  34.             {
  35.               printf("dtor\n");
  36.             }
  37.         }
  38. }
  39.  
  40.  
  41. void check(void (*dg)(int))
  42. {
  43.     dg(2);
  44. }
  45.  
  46. int main()
  47. {
  48.     check(&testFunc);
  49. }