https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102852
Bug ID: 102852 Summary: [12 Regression] Compile time hog since r12-4421-g0bd68793921ecf3b Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: compile-time-hog Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: aldyh at gcc dot gnu.org Target Milestone: --- The following test-case is reduced from gnulib testsuite: $ cat 1.c #include <stdio.h> #include <stdlib.h> #include <string.h> char vasnprintf_resultbuf, vasnprintf_format_buf; char *vasnprintf_format_result; size_t xmax(); typedef enum { TYPE_SCHAR, TYPE_ULONGLONGINT, TYPE_DOUBLE, TYPE_WIDE_CHAR, TYPE_WIDE_STRING } arg_type; void vasnprintf_format() { int *a_0; arg_type a_0_0_0; size_t dp_3; size_t length; for (;;) { int prefix_count, count; size_t maxlen; switch (a_0_0_0) { case TYPE_SCHAR: switch (prefix_count) { case 1: break; case 2: snprintf(0, maxlen, &vasnprintf_format_buf); break; default: abort(); } case TYPE_ULONGLONGINT: a_0[dp_3]; case TYPE_DOUBLE: a_0[dp_3]; case TYPE_WIDE_CHAR: switch (prefix_count) case 2: snprintf(0, maxlen, &vasnprintf_format_buf, &count); case TYPE_WIDE_STRING: size_t n = xmax(); if (n) { char *memory; if (vasnprintf_format_result) memory = malloc(0); if (vasnprintf_resultbuf && length) memcpy(memory, vasnprintf_format_result, length); } } } } $ time gcc-11 1.c -O3 -c real 0m0.073s user 0m0.034s sys 0m0.022s $ time gcc 1.c -O3 -c real 0m3.272s user 0m3.245s sys 0m0.027s