@@ -1644,10 +1644,7 @@ public:
const frange &op1, const frange &op2,
relation_trio trio = TRIO_VARYING) const final override
{
- relation_kind rel = trio.op1_op2 ();
-
- if (op1.known_isnan () || op2.known_isnan ()
- || rel == VREL_LT)
+ if (op1.known_isnan () || op2.known_isnan ())
{
r = range_true (type);
return true;
@@ -1759,10 +1756,7 @@ public:
const frange &op1, const frange &op2,
relation_trio trio = TRIO_VARYING) const final override
{
- relation_kind rel = trio.op1_op2 ();
-
- if (op1.known_isnan () || op2.known_isnan ()
- || rel == VREL_LE)
+ if (op1.known_isnan () || op2.known_isnan ())
{
r = range_true (type);
return true;
@@ -1870,10 +1864,7 @@ public:
const frange &op1, const frange &op2,
relation_trio trio = TRIO_VARYING) const final override
{
- relation_kind rel = trio.op1_op2 ();
-
- if (op1.known_isnan () || op2.known_isnan ()
- || rel == VREL_GT)
+ if (op1.known_isnan () || op2.known_isnan ())
{
r = range_true (type);
return true;
@@ -1985,10 +1976,7 @@ public:
const frange &op1, const frange &op2,
relation_trio trio = TRIO_VARYING) const final override
{
- relation_kind rel = trio.op1_op2 ();
-
- if (op1.known_isnan () || op2.known_isnan ()
- || rel == VREL_GE)
+ if (op1.known_isnan () || op2.known_isnan ())
{
r = range_true (type);
return true;
new file mode 100644
@@ -0,0 +1,54 @@
+// { dg-do compile }
+// { dg-options "-O2 -fgimple -fdump-tree-evrp" }
+
+void link_error();
+
+void __GIMPLE (ssa,startwith("evrp"))
+foo1 (float x, float y)
+{
+ __BB(2):
+ if (x_4(D) <= y_5(D))
+ goto __BB5;
+ else
+ goto __BB3;
+
+ __BB(3):
+ // Relation at this point is VREL_GT.
+ if (x_4(D) __UNGE y_5(D))
+ goto __BB5;
+ else
+ goto __BB4;
+
+ __BB(4):
+ link_error ();
+ goto __BB5;
+
+ __BB(5):
+ return;
+}
+
+void __GIMPLE (ssa,startwith("evrp"))
+foo2 (float x, float y)
+{
+ __BB(2):
+ if (x_4(D) <= y_5(D))
+ goto __BB5;
+ else
+ goto __BB3;
+
+ __BB(3):
+ // Relation at this point is VREL_GT.
+ if (x_4(D) __UNGT y_5(D))
+ goto __BB5;
+ else
+ goto __BB4;
+
+ __BB(4):
+ link_error ();
+ goto __BB5;
+
+ __BB(5):
+ return;
+}
+
+// { dg-final { scan-tree-dump-not "link_error" "evrp" } }
new file mode 100644
@@ -0,0 +1,54 @@
+// { dg-do compile }
+// { dg-options "-O2 -fgimple -fdump-tree-evrp" }
+
+void link_error();
+
+void __GIMPLE (ssa,startwith("evrp"))
+foo1 (float x, float y)
+{
+ __BB(2):
+ if (x_4(D) >= y_5(D))
+ goto __BB5;
+ else
+ goto __BB3;
+
+ __BB(3):
+ // Relation at this point is VREL_LT.
+ if (x_4(D) __UNLT y_5(D))
+ goto __BB5;
+ else
+ goto __BB4;
+
+ __BB(4):
+ link_error ();
+ goto __BB5;
+
+ __BB(5):
+ return;
+}
+
+void __GIMPLE (ssa,startwith("evrp"))
+foo2 (float x, float y)
+{
+ __BB(2):
+ if (x_4(D) >= y_5(D))
+ goto __BB5;
+ else
+ goto __BB3;
+
+ __BB(3):
+ // Relation at this point is VREL_LT.
+ if (x_4(D) __UNLE y_5(D))
+ goto __BB5;
+ else
+ goto __BB4;
+
+ __BB(4):
+ link_error ();
+ goto __BB5;
+
+ __BB(5):
+ return;
+}
+
+// { dg-final { scan-tree-dump-not "link_error" "evrp" } }