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

Reply via email to