@@ -1682,26 +1682,7 @@ codet java_bytecode_convert_methodt::convert_instructions(
1682
1682
else if (statement==patternt (" ?cmp" ))
1683
1683
{
1684
1684
PRECONDITION (op.size () == 2 && results.size () == 1 );
1685
-
1686
- // The integer result on the stack is:
1687
- // 0 if op[0] equals op[1]
1688
- // -1 if op[0] is less than op[1]
1689
- // 1 if op[0] is greater than op[1]
1690
-
1691
- const typet t=java_int_type ();
1692
- exprt one=from_integer (1 , t);
1693
- exprt minus_one=from_integer (-1 , t);
1694
-
1695
- if_exprt greater=if_exprt (
1696
- binary_relation_exprt (op[0 ], ID_gt, op[1 ]),
1697
- one,
1698
- minus_one);
1699
-
1700
- results[0 ]=
1701
- if_exprt (
1702
- binary_relation_exprt (op[0 ], ID_equal, op[1 ]),
1703
- from_integer (0 , t),
1704
- greater);
1685
+ results = convert_cmp (op, results);
1705
1686
}
1706
1687
else if (statement==patternt (" ?cmp?" ))
1707
1688
{
@@ -2508,6 +2489,26 @@ codet java_bytecode_convert_methodt::convert_instructions(
2508
2489
return code;
2509
2490
}
2510
2491
2492
+ exprt::operandst &java_bytecode_convert_methodt::convert_cmp (
2493
+ const exprt::operandst &op,
2494
+ exprt::operandst &results) const
2495
+ { // The integer result on the stack is:
2496
+ // 0 if op[0] equals op[1]
2497
+ // -1 if op[0] is less than op[1]
2498
+ // 1 if op[0] is greater than op[1]
2499
+
2500
+ const typet t = java_int_type ();
2501
+ exprt one = from_integer (1 , t);
2502
+ exprt minus_one = from_integer (-1 , t);
2503
+
2504
+ if_exprt greater =
2505
+ if_exprt (binary_relation_exprt (op[0 ], ID_gt, op[1 ]), one, minus_one);
2506
+
2507
+ results[0 ] = if_exprt (
2508
+ binary_relation_exprt (op[0 ], ID_equal, op[1 ]), from_integer (0 , t), greater);
2509
+ return results;
2510
+ }
2511
+
2511
2512
exprt::operandst &java_bytecode_convert_methodt::convert_ushr (
2512
2513
const irep_idt &statement,
2513
2514
const exprt::operandst &op,
0 commit comments