/* PR rtl-optimization/38245 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ extern void link_error (void); void f1 (unsigned int a) { if (a != 28) { if (4 / a == 5) link_error (); } } void f2 (unsigned int a) { if (4 / a == 5) link_error (); } void f3 (unsigned int a) { if (4 / (a & 0xff) == 5) link_error (); } void f4 (unsigned int a, unsigned int b) { if ((b & 3) / ((a & 0xff) + 1) == 5) link_error (); } void f5 (int a) { if (a != 28) { if (4 / a == 5) link_error (); } } void f6 (int a) { if (4 / a == 5) link_error (); } void f7 (int a) { if (4 / (a & 0xff) == 5) link_error (); } void f8 (int a, int b) { if ((b & 3) / ((a & 0xff) + 1) == 5) link_error (); } void f9 (int a, int b) { if (b >= 4) if ((a / b) == __INT_MAX__ / 2) link_error (); } void f10 (unsigned int a, unsigned int b) { if (b >= 16) if ((a / b) == __INT_MAX__ / 4) link_error (); } void f11 (int a, int b) { if (b <= -32) if ((a / b) == -__INT_MAX__ / 16) link_error (); } void f12 (int a, int b) { if (a >= -6 && a <= 4) if ((a / b) == -7 || (a / b) == 7) link_error (); } void f13 (unsigned int a, unsigned int b) { if (a <= 4) if ((a / b) == 5) link_error (); } /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */