1  /* { dg-do compile } */
       2  /* { dg-options "-O1 -ffinite-math-only -fno-signed-zeros -fdump-tree-phiopt" } */
       3  
       4  float repl1 (float varx)
       5  {
       6    if (varx < 0.0)
       7      return 0.0;
       8    else if (varx > 1.0)
       9      return 1.0;
      10    else
      11      return varx;
      12  }
      13  
      14  /* Should be turned to
      15  
      16     varx_4 = MIN_EXPR <1.0e+0, varx_2>;
      17     varx_5 = MAX_EXPR <varx_4, 0.0>;  */  
      18  
      19  /* phiopt1 confused by predictors.  */
      20  /* { dg-final { scan-tree-dump "varx.*MIN_EXPR.*1\\.0" "phiopt1" { xfail *-*-* } } } */
      21  /* { dg-final { scan-tree-dump "varx.*MAX_EXPR.*0\\.0" "phiopt1" { xfail *-*-* } } } */
      22  /* { dg-final { scan-tree-dump "varx.*MIN_EXPR.*1\\.0" "phiopt2"} } */
      23  /* { dg-final { scan-tree-dump "varx.*MAX_EXPR.*0\\.0" "phiopt2"} } */
      24  
      25  float repl2 (float vary)
      26  {
      27    if (vary > 1.0)
      28      return 1.0;
      29    else if (vary < 0.0)
      30      return 0.0;
      31    else
      32      return vary;
      33  }
      34  
      35  /* Should be turned to
      36  
      37     vary_4 = MAX_EXPR <0.0, vary_2>;
      38     vary_5 = MIN_EXPR <vary_4, 1.0e+0>;  */
      39  
      40  /* phiopt1 confused by predictors.  */
      41  /* { dg-final { scan-tree-dump "vary.*MAX_EXPR.*0\\.0" "phiopt1" { xfail *-*-* } } } */
      42  /* { dg-final { scan-tree-dump "vary.*MIN_EXPR.*1\\.0" "phiopt1" { xfail *-*-* } } } */
      43  /* { dg-final { scan-tree-dump "vary.*MAX_EXPR.*0\\.0" "phiopt2"} } */
      44  /* { dg-final { scan-tree-dump "vary.*MIN_EXPR.*1\\.0" "phiopt2"} } */
      45  
      46  float repl3 (float varz, float vara, float varb)
      47  {
      48    if (varz > vara)
      49      return vara;
      50    else if (varz < varb)
      51      return varb;
      52    else
      53      return varz;
      54  }
      55  
      56  /* Should be turned to
      57  
      58    if (varz_2 > vara_3) goto <L4>; else goto <L1>;
      59  
      60  <L1>:;
      61    vara_6 = MAX_EXPR <varb_5, varz_2>;  */
      62  
      63  /* phiopt1 confused by predictors.  */
      64  /* { dg-final { scan-tree-dump "vara.*MAX_EXPR" "phiopt1" { xfail *-*-* } } } */
      65  /* { dg-final { scan-tree-dump "if .*varz" "phiopt2"} } */
      66  /* { dg-final { scan-tree-dump "vara.*MAX_EXPR" "phiopt2"} } */