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

--- Comment #2 from Anton Blanchard <anton at ozlabs dot org> ---
This reproduces the issue. Build without optimisation to avoid all the code
disappearing:

#define INSNS_1 x = x + 1;
#define INSNS_2 INSNS_1 INSNS_1
#define INSNS_4 INSNS_2 INSNS_2
#define INSNS_8 INSNS_4 INSNS_4
#define INSNS_16 INSNS_8 INSNS_8
#define INSNS_32 INSNS_16 INSNS_16
#define INSNS_64 INSNS_32 INSNS_32
#define INSNS_128 INSNS_64 INSNS_64
#define INSNS_256 INSNS_128 INSNS_128
#define INSNS_512 INSNS_256 INSNS_256
#define INSNS_1024 INSNS_512 INSNS_512
#define INSNS_2048 INSNS_1024 INSNS_1024
#define INSNS_4096 INSNS_2048 INSNS_2048
#define INSNS_8192 INSNS_4096 INSNS_4096
#define INSNS_16384 INSNS_8192 INSNS_8192
#define INSNS_32768 INSNS_16384 INSNS_16384
#define INSNS_65536 INSNS_32768 INSNS_32768
#define INSNS_131072 INSNS_65536 INSNS_65536
#define INSNS_262144 INSNS_131072 INSNS_131072
#define INSNS_524288 INSNS_262144 INSNS_262144
#define INSNS_1048576 INSNS_524288 INSNS_524288

int foo(int x)
{
  if (x)
    goto out;

  // > 1MB of code
  INSNS_524288

out:
  return x;
}

# riscv64-unknown-linux-gnu-gcc -c large-function.c
during RTL pass: final
large-function.c: In function 'foo':
large-function.c:33:1: internal compiler error: output_operand: invalid
expression as operand

Reply via email to