/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
|
/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
|
|
|
|
|
struct rtx_def;
|
struct rtx_def;
|
typedef struct rtx_def *rtx;
|
typedef struct rtx_def *rtx;
|
union rtunion_def
|
union rtunion_def
|
{
|
{
|
rtx rt_rtx;
|
rtx rt_rtx;
|
};
|
};
|
typedef union rtunion_def rtunion;
|
typedef union rtunion_def rtunion;
|
struct rtx_def
|
struct rtx_def
|
{
|
{
|
int code;
|
int code;
|
union u
|
union u
|
{
|
{
|
rtunion fld[1];
|
rtunion fld[1];
|
} u;
|
} u;
|
};
|
};
|
|
|
sss (rtx insn, int code1, int code2, int code3)
|
sss (rtx insn, int code1, int code2, int code3)
|
{
|
{
|
_Bool D1562;
|
_Bool D1562;
|
struct rtx_def * body;
|
struct rtx_def * body;
|
int i;
|
int i;
|
int n_sets;
|
int n_sets;
|
int D1544;
|
int D1544;
|
|
|
body = insn->u.fld[5].rt_rtx;
|
body = insn->u.fld[5].rt_rtx;
|
D1544 = body->code;
|
D1544 = body->code;
|
n_sets = 1;
|
n_sets = 1;
|
if (D1544 == 55) goto L7; else goto L1;
|
if (D1544 == 55) goto L7; else goto L1;
|
|
|
L1:
|
L1:
|
n_sets = 0;
|
n_sets = 0;
|
if (code3 == 99) goto L2; else goto L11;
|
if (code3 == 99) goto L2; else goto L11;
|
|
|
L2:
|
L2:
|
D1562 = code1 == 10;
|
D1562 = code1 == 10;
|
n_sets = (int) D1562;
|
n_sets = (int) D1562;
|
if (n_sets > 0) goto L7; else goto L11;
|
if (n_sets > 0) goto L7; else goto L11;
|
|
|
L37:
|
L37:
|
if (code2 == 42) goto L8; else goto L9;
|
if (code2 == 42) goto L8; else goto L9;
|
|
|
L8:
|
L8:
|
arf ();
|
arf ();
|
|
|
L9:
|
L9:
|
i = i + 1;
|
i = i + 1;
|
if (i < n_sets) goto L37; else goto L32;
|
if (i < n_sets) goto L37; else goto L32;
|
|
|
L32:
|
L32:
|
|
|
L11:
|
L11:
|
if (n_sets > 1) goto L12; else goto L15;
|
if (n_sets > 1) goto L12; else goto L15;
|
|
|
L12:
|
L12:
|
nit ();
|
nit ();
|
|
|
L14:
|
L14:
|
i = 0;
|
i = 0;
|
goto L38;
|
goto L38;
|
|
|
L15:
|
L15:
|
if (n_sets > 0) goto L14; else goto L16;
|
if (n_sets > 0) goto L14; else goto L16;
|
|
|
L38:
|
L38:
|
frob ();
|
frob ();
|
i = i + 1;
|
i = i + 1;
|
if (n_sets > i) goto L38; else goto L16;
|
if (n_sets > i) goto L38; else goto L16;
|
|
|
L16:
|
L16:
|
return;
|
return;
|
|
|
L7:
|
L7:
|
i = 0;
|
i = 0;
|
goto L37;
|
goto L37;
|
|
|
}
|
}
|
|
|
/* The first n_sets > 0 test can be simplfiied into n_sets == 1 since
|
/* The first n_sets > 0 test can be simplfiied into n_sets == 1 since
|
n_sets can only have the values [0, 1] as it's the result of a
|
n_sets can only have the values [0, 1] as it's the result of a
|
boolean operation.
|
boolean operation.
|
|
|
The second n_sets > 0 test can also be simplified into n_sets == 1
|
The second n_sets > 0 test can also be simplified into n_sets == 1
|
as the only way to reach the tests is when n_sets <= 1 and the only
|
as the only way to reach the tests is when n_sets <= 1 and the only
|
value which satisfies both conditions is n_sets == 1. */
|
value which satisfies both conditions is n_sets == 1. */
|
/* { dg-final { scan-tree-dump-times "Simplified relational" 2 "vrp1" } } */
|
/* { dg-final { scan-tree-dump-times "Simplified relational" 2 "vrp1" } } */
|
/* { dg-final { cleanup-tree-dump "vrp1" } } */
|
/* { dg-final { cleanup-tree-dump "vrp1" } } */
|
|
|
|
|