(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
pr81376.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-original" } */
       3  
       4  typedef double c_t;
       5  typedef int a_t;
       6  int f(a_t a1, a_t a2) {
       7    return (c_t) a1 < (c_t) a2;
       8    /* { dg-final { scan-tree-dump "return (<retval> = )?a1 < a2" "original" } } */
       9  }
      10  
      11  void f1(short a, short b)
      12  {
      13    volatile int s_s;
      14    s_s = (float) a < (float) b;
      15    /* { dg-final { scan-tree-dump "s_s = a < b" "original" } } */
      16  }
      17  
      18  void f2(unsigned short a, unsigned short b)
      19  {
      20    volatile int us_us;
      21    us_us = (float) a < (float) b;
      22    /* { dg-final { scan-tree-dump "us_us = a < b" "original" } } */
      23  }
      24  
      25  /* We don't optimize here because neither of integral types is
      26     subset of the other.  */
      27  void f3(unsigned short a, short b)
      28  {
      29    volatile int us_s;
      30    us_s = (float) a < (float) b;
      31    /* { dg-final { scan-tree-dump "us_s = \\(float\\) a < \\(float\\) b" "original" } } */
      32  }
      33  
      34  void f4(unsigned short a, int b)
      35  {
      36    volatile int us_i;
      37    us_i = (double) a < (double) b;
      38    /* { dg-final { scan-tree-dump "us_i = \\(int\\) a < b" "original" { target { ! short_eq_int } } } } */
      39  }
      40  
      41  void f4_short_eq_int(unsigned short a, long b)
      42  {
      43    volatile long us_l;
      44    us_l = (double) a < (double) b;
      45    /* { dg-final { scan-tree-dump "us_l = \\(long int\\) a < b" "original" { target { short_eq_int } } } } */
      46  }
      47  
      48  /* We don't optimize here because neither of integral types is
      49     subset of the other.  */
      50  void f5(short a, unsigned int b)
      51  {
      52    volatile int s_ui;
      53    s_ui = (double) a < (double) b;
      54    /* { dg-final { scan-tree-dump "s_ui = \\(double\\) a < \\(double\\) b" "original" } } */
      55  }