gcc.dg/tree-ssa/vrp17.c contains:
arf (({
if (3 >= tree_code_length[stmt->common.code])
abort ();
stmt->exp.operands[3];
}),
({
if (2 >= tree_code_length[stmt->common.code])
abort ();
stmt->exp.operands[2];
}));
scan-tree-dump-times assumes an argument evaluation order.
If we evaluate the second argument and then the first (that is, right to left),
then VRP generates a "== 3" comparison. This happens on x86_64 for example.
If we evaluate arguments in the opposite order, VRP simply removes "2 >="
as that is redundant. This happens on arm-none-eabi for example.
I've got a patch to remove the dependency on the argument evaluation order.
--
Summary: gcc.dg/tree-ssa/vrp17.c assumes an argument evaluation
order
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: testsuite
AssignedTo: kazu at gcc dot gnu dot org
ReportedBy: kazu at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org,law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22357