https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125571

--- Comment #4 from Hubert Garavel <hubert.garavel at inria dot fr> ---

> I wonder if you have means to strip this down to something more manageable,
> compiling in ~1 minute while still doing a meaningful thing? 

The main part of the code is a linear sequence of "blocks" having all the same
form:

   if (
   # 61848 "446931.c" 3 4
     _setjmp (
   # 61848 "446931.c"
      CAESAR_SETJMP_BUFFER
   # 61848 "446931.c" 3 4
      ) 
   # 61848 "446931.c"
                                 == 0)
   fprintf (CAESAR_RESULT,(((CAESAR_CONSTANT_PARAM__S_6_1) == 
   (CAESAR_CONSTANT_PARAM__S_6_4))) ? "1\n" : "0\n");
   else
   fprintf (CAESAR_RESULT,"2\n");

I think you can remove as many of them as you need without changing the essence
of the code. Each block prints 0, 1, or 2 on a file if the expressions are 
different, equal, or raise exceptions.

The speed at run-time of the generated code is not important, so optimizations
are not suitable for this purpose. What is expected is a C compiler that goes
fast at compile time. Probably, GCC tries to do too clever analysis here.

If the problem cannot be solved, I would be happy with compiler flags that make
GCC fast at compile-time. I tried -O0 but it did not seem to help.

Reply via email to