1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
/* PR tree-optimization/46309 */
/* { dg-do compile } */
/* { dg-options "-O2 -fno-ipa-icf -fdump-tree-reassoc-details" } */
int foo (void);
void
f1 (int a)
{
_Bool v1 = (a == 3);
_Bool v2 = (a == 1);
_Bool v3 = (a == 4);
_Bool v4 = (a == 2);
if (v1 || v2 || v3 || v4)
foo ();
}
void
f2 (int a)
{
_Bool v1 = (a == 1);
_Bool v2 = (a == 2);
_Bool v3 = (a == 3);
_Bool v4 = (a == 4);
if (v1 || v2 || v3 || v4)
foo ();
}
void
f3 (unsigned int a)
{
_Bool v1 = (a <= 31);
_Bool v2 = (a >= 64 && a <= 95);
_Bool v3 = (a >= 128 && a <= 159);
_Bool v4 = (a >= 192 && a <= 223);
if (v1 || v2 || v3 || v4)
foo ();
}
void
f4 (int a)
{
_Bool v1 = (a == 3);
_Bool v2 = (a == 1);
_Bool v3 = (a == 4);
_Bool v4 = (a == 2);
_Bool v5 = (a == 7);
_Bool v6 = (a == 5);
_Bool v7 = (a == 8);
_Bool v8 = (a == 6);
if (v1 || v2 || v3 || v4 || v5 || v6 || v7 || v8)
foo ();
}
void
f5 (int a)
{
_Bool v1 = (a != 3);
_Bool v2 = (a != 1);
_Bool v3 = (a != 4);
_Bool v4 = (a != 2);
_Bool v5 = (a != 7);
_Bool v6 = (a != 5);
_Bool v7 = (a != 8);
_Bool v8 = (a != 6);
if (v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8)
foo ();
}
void
f6 (int a)
{
_Bool v1 = (a != 3);
_Bool v2 = (a != 1);
_Bool v3 = (a != 4);
_Bool v4 = (a != 2);
_Bool v5 = (a != 7);
_Bool v6 = (a != 5);
_Bool v7 = (a != 8);
_Bool v8 = (a != 6);
if ((v1 && v2 && v3 && v4) && (v5 && v6 && v7 && v8))
foo ();
}
int
f7 (int a)
{
_Bool v1 = (a == 3);
_Bool v2 = (a == 1);
_Bool v3 = (a == 4);
_Bool v4 = (a == 2);
_Bool v5 = (a == 7);
_Bool v6 = (a == 5);
_Bool v7 = (a == 8);
_Bool v8 = (a == 6);
return v1 || v2 || v3 || v4 || v5 || v6 || v7 || v8;
}
_Bool
f8 (int a)
{
_Bool v1 = (a == 3);
_Bool v2 = (a == 1);
_Bool v3 = (a == 4);
_Bool v4 = (a == 2);
_Bool v5 = (a == 7);
_Bool v6 = (a == 5);
_Bool v7 = (a == 8);
_Bool v8 = (a == 6);
return v1 || v2 || v3 || v4 || v5 || v6 || v7 || v8;
}
int
f9 (int a)
{
_Bool v1 = (a != 3);
_Bool v2 = (a != 1);
_Bool v3 = (a != 4);
_Bool v4 = (a != 2);
_Bool v5 = (a != 7);
_Bool v6 = (a != 5);
_Bool v7 = (a != 8);
_Bool v8 = (a != 6);
return v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8;
}
_Bool
f10 (int a)
{
_Bool v1 = (a != 3);
_Bool v2 = (a != 1);
_Bool v3 = (a != 4);
_Bool v4 = (a != 2);
_Bool v5 = (a != 7);
_Bool v6 = (a != 5);
_Bool v7 = (a != 8);
_Bool v8 = (a != 6);
return v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8;
}
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.1, 1. and -.2, 2. and -.3, 3. and -.4, 4.\[\n\r\]* into" 2 "reassoc1" } } */
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.0, 31. and -.64, 95.\[\n\r\]* into" 1 "reassoc1" } } */
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.128, 159. and -.192, 223.\[\n\r\]* into" 1 "reassoc1" } } */
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.1, 1. and -.2, 2. and -.3, 3. and -.4, 4. and -.5, 5. and -.6, 6. and -.7, 7. and -.8, 8.\[\n\r\]* into" 7 "reassoc1" } } */
/* { dg-final { scan-tree-dump-times "Optimizing range tests \[^\r\n\]*_\[0-9\]* -.0, 0. and -.128, 128.\[\n\r\]* into" 1 "reassoc2" } } */
|