(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
pure-code/
pr96770.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-mpure-code" } */
       3  
       4  int arr[1000];
       5  int *f4 (void) { return &arr[1]; }
       6  
       7  /* For cortex-m0 (thumb-1/v6m), we generate 2 pairs of movs/adds with upper/lower:#arr+4.  */
       8  /* { dg-final { scan-assembler-times "arr\\+4" 4 { target { { ! arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */
       9  
      10  /* For cortex-m with movt/movw (thumb-1/v8m.base or thumb-2), we
      11     generate a movt/movw pair with upper/lower:#arr+4 possibly via an anchor.  */
      12  /* { dg-final { scan-assembler-times "upper16:\[^ \]+.\\+4" 1 { target { arm_thumb1_movt_ok || arm_thumb2_ok } } } } */
      13  /* { dg-final { scan-assembler-times "lower16:\[^ \]+\\+4" 1 { target { arm_thumb1_movt_ok || arm_thumb2_ok } } } } */
      14  
      15  int *f5 (void) { return &arr[80]; }
      16  
      17  /* For cortex-m0 (thumb-1/v6m), we generate 1 ldr from rodata pointer to arr+320.  */
      18  /* { dg-final { scan-assembler-times "arr\\+320" 1 { target { { ! arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */
      19  
      20  /* For cortex-m with movt/movw (thumb-1/v8m.base or thumb-2), we
      21     generate a movt/movw pair with upper/lower:arr+320 possibly via an anchor.  */
      22  /* { dg-final { scan-assembler-times "upper16:\[^ \]+\\+320" 1 { target { arm_thumb1_movt_ok || arm_thumb2_ok } } } } */
      23  /* { dg-final { scan-assembler-times "lower16:\[^ \]+\\+320" 1 { target { arm_thumb1_movt_ok || arm_thumb2_ok } } } } */