(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr81281-3.c
       1  /* PR sanitizer/81281 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-not "\[+=-] \?123\[ ;]" "optimized" } } */
       5  
       6  #ifdef __SIZEOF_INT128__
       7  __int128
       8  f1 (int a, long long b)
       9  {
      10    __int128 f = 123 + a;
      11    __int128 g = 123 + b;
      12    return f - g;
      13  }
      14  #endif
      15  
      16  signed char
      17  f2 (int a, long long b)
      18  {
      19    signed char f = 123 + a;
      20    signed char g = 123 + b;
      21    return f - g;
      22  }
      23  
      24  signed char
      25  f3 (unsigned int a, unsigned long long b)
      26  {
      27    signed char f = 123 + a;
      28    signed char g = 123 + b;
      29    return f - g;
      30  }
      31  
      32  unsigned char
      33  f4 (unsigned int a, unsigned long long b)
      34  {
      35    unsigned char f = 123 + a;
      36    unsigned char g = 123 + b;
      37    return f - g;
      38  }
      39  
      40  /* This isn't optimized yet.  */
      41  #if 0
      42  long long
      43  f5 (int a)
      44  {
      45    long long f = 123 + a;
      46    long long g = 123;
      47    return f - g;
      48  }
      49  #endif
      50  
      51  signed char
      52  f6 (long long a)
      53  {
      54    signed char f = 123 + a;
      55    signed char g = 123;
      56    return f - g;
      57  }
      58  
      59  signed char
      60  f7 (unsigned int a)
      61  {
      62    signed char f = 123 + a;
      63    signed char g = 123;
      64    return f - g;
      65  }
      66  
      67  unsigned char
      68  f8 (unsigned long int a)
      69  {
      70    unsigned char f = 123 + a;
      71    unsigned char g = 123;
      72    return f - g;
      73  }
      74  
      75  long long
      76  f9 (int a)
      77  {
      78    long long f = 123;
      79    long long g = 123 + a;
      80    return f - g;
      81  }
      82  
      83  signed char
      84  f10 (long long a)
      85  {
      86    signed char f = 123;
      87    signed char g = 123 + a;
      88    return f - g;
      89  }
      90  
      91  signed char
      92  f11 (unsigned int a)
      93  {
      94    signed char f = 123;
      95    signed char g = 123 + a;
      96    return f - g;
      97  }
      98  
      99  unsigned char
     100  f12 (unsigned long int a)
     101  {
     102    unsigned char f = 123;
     103    unsigned char g = 123 + a;
     104    return f - g;
     105  }