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.