- /* visit every Return */
- for (j = 0, k = get_Block_n_cfgpreds(endbl); j < k; ++j) {
- ir_node *node = get_Block_cfgpred(endbl, j);
- ir_op *op = get_irn_op(node);
- ir_node *mem;
-
- /* Bad nodes usually do NOT produce anything, so it's ok */
- if (op == op_Bad)
- continue;
-
- if (op == op_Return) {
- mem = get_Return_mem(node);
+ if (get_irg_additional_properties(irg) & mtp_property_const) {
+ /* already marked as a const function */
+ ++num_pure;
+ }
+ else {
+ /* visit every Return */
+ for (j = get_Block_n_cfgpreds(endbl) - 1; j >= 0; --j) {
+ ir_node *node = get_Block_cfgpred(endbl, j);
+ ir_op *op = get_irn_op(node);
+ ir_node *mem;