(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
sh/
pr67675.c
       1  /* Check that run time alignment tests are generated only for inputs of
       2     unknown alignment.  */
       3  /* { dg-do compile }  */
       4  /* { dg-options "-O2" }  */
       5  /* { dg-final { scan-assembler-not "jmp|bsr|jsr" } }  */
       6  /* { dg-final { scan-assembler-times {tst	#3,r0} 6 } }  */
       7  /* { dg-final { scan-assembler-times {or	r[0-9],r[0-9]} 1 } }  */
       8  
       9  int
      10  test_00 (const char* x, const char* y)
      11  {
      12    /* 1x or reg,reg, 1x tst #3,r0  */
      13    return __builtin_strcmp (x, y);
      14  }
      15  
      16  int
      17  test_01 (const char* x, const char* y)
      18  {
      19    /* 1x tst #3,r0  */
      20    return __builtin_strcmp (__builtin_assume_aligned (x, 4), y);
      21  }
      22  
      23  int
      24  test_02 (const char* x, const char* y)
      25  {
      26    /* 1x tst #3,r0  */
      27    return __builtin_strcmp (x, __builtin_assume_aligned (y, 4));
      28  }
      29  
      30  int
      31  test_03 (const char* x, const char* y)
      32  {
      33    return __builtin_strcmp (__builtin_assume_aligned (x, 4),
      34  			   __builtin_assume_aligned (y, 4));
      35  }
      36  
      37  int
      38  test_04 (const char* x, const char* y)
      39  {
      40    /* 1x tst #3,r0  */
      41    return __builtin_strcmp (x, "1234567");
      42  }
      43  
      44  int
      45  test_05 (const char* x, const char* y)
      46  {
      47    /* 1x tst #3,r0  */
      48    return __builtin_strcmp ("1234567", y);
      49  }
      50  
      51  int
      52  test_06 (const char* s1)
      53  {
      54    /* 1x tst #3,r0  */
      55    return __builtin_strncmp (s1, "abcdabcd", 8);
      56  }
      57  
      58  int
      59  test_07 (const char* s1)
      60  {
      61    return __builtin_strncmp (__builtin_assume_aligned (s1, 4), "abcdabcd", 8);
      62  }