+2012-09-21  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/54290
+       PR rtl-optimization/54644
+       * reload1.c (choose_reload_regs): Fix thinko in previous change.
+
 2012-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * config/rs6000/rs6000.md (define_split for plus_eqsi):
 
             If we succeeded removing some reload and we are doing a preliminary
             pass just to remove such reloads, make another pass, since the
             removal of one reload might allow us to inherit another one.  */
-         else if (pass
-                  && rld[r].in
+         else if (rld[r].in
                   && rld[r].out != rld[r].in
                   && remove_address_replacements (rld[r].in))
-           pass = 2;
+           {
+             if (pass)
+               pass = 2;
+           }
 #ifdef SECONDARY_MEMORY_NEEDED
          /* If we needed a memory location for the reload, we also have to
             remove its related reloads.  */
-         else if (pass
-                  && rld[r].in
+         else if (rld[r].in
                   && rld[r].out != rld[r].in
                   && (tem = replaced_subreg (rld[r].in), REG_P (tem))             
                   && REGNO (tem) < FIRST_PSEUDO_REGISTER
                   && remove_address_replacements
                      (get_secondary_mem (tem, rld[r].inmode, rld[r].opnum,
                                          rld[r].when_needed)))
-           pass = 2;
+           {
+             if (pass)
+               pass = 2;
+           }
 #endif
        }
     }