This problem was already fixed as part of PR104263: the abnormal edge
that remained from before inlining didn't make sense after inlining.
So this patch adds only the testcase.
for gcc/testsuite/ChangeLog
PR tree-optimization/103845
PR tree-optimization/104263
* gcc.dg/pr103845.c: New.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O1 -fharden-compares -fno-ipa-pure-const" } */
+
+int
+baz (void);
+
+__attribute__ ((returns_twice)) void
+bar (void)
+{
+}
+
+int
+quux (int y, int z)
+{
+ return (y || z >= 0) ? y : z;
+}
+
+int
+foo (int x)
+{
+ int a = 0, b = x == a;
+
+ bar ();
+
+ if (!!baz () < quux (b, a))
+ ++x;
+
+ return x;
+}