(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
shrink_wrap_1.c
       1  /* { dg-do compile { target { ! ia32 } } } */
       2  /* { dg-options "-O2 -fdump-rtl-pro_and_epilogue -fno-stack-protector" } */
       3  
       4  enum machine_mode
       5  {
       6    FAKE_0,
       7    FAKE_1,
       8    FAKE_2,
       9    FAKE_3,
      10    FAKE_4,
      11    FAKE_5,
      12    NUM_MACHINE_MODES,
      13  };
      14  
      15  typedef int *rtx;
      16  typedef long unsigned int size_t;
      17  extern unsigned char mode_size[NUM_MACHINE_MODES];
      18  
      19  extern rtx c_readstr (const char *, enum machine_mode);
      20  extern rtx convert_to_mode (enum machine_mode, rtx, int);
      21  extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
      22  extern rtx force_reg (enum machine_mode, rtx);
      23  extern unsigned char mode_size_inline (enum machine_mode);
      24  extern void *memset (void *__s, int __c, size_t __n);
      25  
      26  rtx
      27  builtin_memset_gen_str (void *data, long offset __attribute__ ((__unused__)),
      28  			enum machine_mode mode)
      29  {
      30    rtx target, coeff;
      31    size_t size;
      32    char *p;
      33  
      34    size = ((unsigned short) (__builtin_constant_p (mode)
      35  			    ? mode_size_inline (mode) : mode_size[mode]));
      36    if (size == 1)
      37      return (rtx) data;
      38  
      39    p = ((char *) __builtin_alloca(sizeof (char) * (size)));
      40    memset (p, 1, size);
      41    coeff = c_readstr (p, mode);
      42  
      43    target = convert_to_mode (mode, (rtx) data, 1);
      44    target = expand_mult (mode, target, coeff, (rtx) 0, 1);
      45    return force_reg (mode, target);
      46  }
      47  
      48  /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */