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

            Bug ID: 86715
           Summary: ICE passing too large argument on stack
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhonghao at pku dot org.cn
  Target Milestone: ---

The code is as follow:

#define COLS 24000L

struct Matrix {
  float data[COLS * COLS];
};

float mulv(float A[], float B[], int i, int j)
{
  float result = 0.0;
  { int k; for (k = 0; k < COLS; ++k)
             result += A[i*COLS + k] * B[j + k*COLS];
  }
  return result;
}

struct Matrix mulm(struct Matrix A, struct Matrix B)
{
  struct Matrix result;

#define IJ(M) (M[i*COLS + j])

  { int i, j; for (i = 0; i < COLS; ++i)
                for (j = 0; j < COLS; ++j)
                  IJ(result.data) = mulv(A.data, B.data, i, j);
  }
  return result;
}

int main(int argc, char* argv[])
{
  struct Matrix m1, m2, result;

  result = mulm(m1, m2);
  return result.data[argc];
}

The error messages of gcc are as follows:

2sameartificialtestprogramhopefullytextplain.cpp: In function 'int main(int,
char**)':
2sameartificialtestprogramhopefullytextplain.cpp:34:23: sorry, unimplemented:
passing too large argument on stack
   result = mulm(m1, m2);
                       ^
2sameartificialtestprogramhopefullytextplain.cpp:34:23: sorry, unimplemented:
passing too large argument on stack
during RTL pass: expand
2sameartificialtestprogramhopefullytextplain.cpp:34:23: internal compiler
error: in expand_call, at calls.c:4591
0x6d26bd expand_call(tree_node*, rtx_def*, int)
        ../../gcc9.0/gcc/calls.c:4588
0xbdfefe expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc9.0/gcc/expr.c:10914
0xbec31f store_expr(tree_node*, rtx_def*, int, bool, bool)
        ../../gcc9.0/gcc/expr.c:5614
0xbed74b expand_assignment(tree_node*, tree_node*, bool)
        ../../gcc9.0/gcc/expr.c:5398
0xadb8e4 expand_call_stmt
        ../../gcc9.0/gcc/cfgexpand.c:2685
0xadb8e4 expand_gimple_stmt_1
        ../../gcc9.0/gcc/cfgexpand.c:3575
0xadb8e4 expand_gimple_stmt
        ../../gcc9.0/gcc/cfgexpand.c:3734
0xadcc4f expand_gimple_basic_block
        ../../gcc9.0/gcc/cfgexpand.c:5769
0xae1837 execute
        ../../gcc9.0/gcc/cfgexpand.c:6372
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

My gcc is 9.0.0

Reply via email to