Revision fedc0da2 tcg/optimize.c

b/tcg/optimize.c
441 441
                if ((temps[args[0]].state == TCG_TEMP_COPY
442 442
                    && temps[args[0]].val == args[1])
443 443
                    || args[0] == args[1]) {
444
                    args += 3;
445 444
                    gen_opc_buf[op_index] = INDEX_op_nop;
446 445
                } else {
447 446
                    gen_opc_buf[op_index] = op_to_mov(op);
448 447
                    tcg_opt_gen_mov(s, gen_args, args[0], args[1],
449 448
                                    nb_temps, nb_globals);
450 449
                    gen_args += 2;
451
                    args += 3;
452 450
                }
451
                args += 3;
453 452
                continue;
454 453
            }
455 454
            break;
......
480 479
        CASE_OP_32_64(and):
481 480
            if (args[1] == args[2]) {
482 481
                if (args[1] == args[0]) {
483
                    args += 3;
484 482
                    gen_opc_buf[op_index] = INDEX_op_nop;
485 483
                } else {
486 484
                    gen_opc_buf[op_index] = op_to_mov(op);
487 485
                    tcg_opt_gen_mov(s, gen_args, args[0], args[1], nb_temps,
488 486
                                    nb_globals);
489 487
                    gen_args += 2;
490
                    args += 3;
491 488
                }
489
                args += 3;
492 490
                continue;
493 491
            }
494 492
            break;
......
538 536
                gen_opc_buf[op_index] = op_to_movi(op);
539 537
                tmp = do_constant_folding(op, temps[args[1]].val, 0);
540 538
                tcg_opt_gen_movi(gen_args, args[0], tmp, nb_temps, nb_globals);
541
                gen_args += 2;
542
                args += 2;
543
                break;
544 539
            } else {
545 540
                reset_temp(args[0], nb_temps, nb_globals);
546 541
                gen_args[0] = args[0];
547 542
                gen_args[1] = args[1];
548
                gen_args += 2;
549
                args += 2;
550
                break;
551 543
            }
544
            gen_args += 2;
545
            args += 2;
546
            break;
552 547
        CASE_OP_32_64(add):
553 548
        CASE_OP_32_64(sub):
554 549
        CASE_OP_32_64(mul):
......
572 567
                                          temps[args[2]].val);
573 568
                tcg_opt_gen_movi(gen_args, args[0], tmp, nb_temps, nb_globals);
574 569
                gen_args += 2;
575
                args += 3;
576
                break;
577 570
            } else {
578 571
                reset_temp(args[0], nb_temps, nb_globals);
579 572
                gen_args[0] = args[0];
580 573
                gen_args[1] = args[1];
581 574
                gen_args[2] = args[2];
582 575
                gen_args += 3;
583
                args += 3;
584
                break;
585 576
            }
577
            args += 3;
578
            break;
586 579
        CASE_OP_32_64(setcond):
587 580
            if (temps[args[1]].state == TCG_TEMP_CONST
588 581
                && temps[args[2]].state == TCG_TEMP_CONST) {
......
591 584
                                               temps[args[2]].val, args[3]);
592 585
                tcg_opt_gen_movi(gen_args, args[0], tmp, nb_temps, nb_globals);
593 586
                gen_args += 2;
594
                args += 4;
595
                break;
596 587
            } else {
597 588
                reset_temp(args[0], nb_temps, nb_globals);
598 589
                gen_args[0] = args[0];
......
600 591
                gen_args[2] = args[2];
601 592
                gen_args[3] = args[3];
602 593
                gen_args += 4;
603
                args += 4;
604
                break;
605 594
            }
595
            args += 4;
596
            break;
606 597
        CASE_OP_32_64(brcond):
607 598
            if (temps[args[0]].state == TCG_TEMP_CONST
608 599
                && temps[args[1]].state == TCG_TEMP_CONST) {
......
612 603
                    gen_opc_buf[op_index] = INDEX_op_br;
613 604
                    gen_args[0] = args[3];
614 605
                    gen_args += 1;
615
                    args += 4;
616 606
                } else {
617 607
                    gen_opc_buf[op_index] = INDEX_op_nop;
618
                    args += 4;
619 608
                }
620
                break;
621 609
            } else {
622 610
                memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
623 611
                reset_temp(args[0], nb_temps, nb_globals);
......
626 614
                gen_args[2] = args[2];
627 615
                gen_args[3] = args[3];
628 616
                gen_args += 4;
629
                args += 4;
630
                break;
631 617
            }
618
            args += 4;
619
            break;
632 620
        case INDEX_op_call:
633 621
            nb_call_args = (args[0] >> 16) + (args[0] & 0xffff);
634 622
            if (!(args[nb_call_args + 1] & (TCG_CALL_CONST | TCG_CALL_PURE))) {

Also available in: Unified diff