1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -O3" } */
       3  /* { dg-final { check-function-bodies "**" "" } } */
       4  
       5  void f2 (char*);
       6  void f3 (char*, ...);
       7  
       8  /*
       9  ** stach_check_alloca_1:
      10  **	addi	sp,sp,-48
      11  **	sw	ra,12\(sp\)
      12  **	sw	s0,8\(sp\)
      13  **	addi	s0,sp,16
      14  **	...
      15  **	addi	a0,a0,23
      16  **	andi	a0,a0,-16
      17  **	sub	sp,sp,a0
      18  **	...
      19  **	addi	sp,s0,-16
      20  **	lw	ra,12\(sp\)
      21  **	lw	s0,8\(sp\)
      22  **	addi	sp,sp,48
      23  **	jr	ra
      24  */
      25  void stach_check_alloca_1 (int y, ...)
      26  {
      27    char* pStr = (char*)__builtin_alloca(y);
      28    f2(pStr);
      29  }
      30  
      31  /*
      32  ** stach_check_alloca_2:
      33  **	addi	sp,sp,-48
      34  **	sw	ra,44\(sp\)
      35  **	sw	s0,40\(sp\)
      36  **	addi	s0,sp,48
      37  **	addi	a0,a0,23
      38  **	andi	a0,a0,-16
      39  **	sub	sp,sp,a0
      40  **	...
      41  **	addi	sp,s0,-48
      42  **	lw	ra,44\(sp\)
      43  **	lw	s0,40\(sp\)
      44  **	addi	sp,sp,48
      45  **	jr	ra
      46  */
      47  void stach_check_alloca_2 (int y)
      48  {
      49    char* pStr = (char*)__builtin_alloca(y);
      50    f3(pStr, pStr, pStr, pStr, pStr, pStr, pStr, pStr, 2, pStr, pStr, pStr, 1);
      51  }