+
+ assim_lea_base = get_irn_n(left, 0);
+ assim_lea_idx = get_irn_n(left, 1);
+
+ if (be_is_NoReg(cg, assim_lea_base) && ! be_is_NoReg(cg, assim_lea_idx)) {
+ /* assimilate index */
+ assert(be_is_NoReg(cg, index) && ! be_is_NoReg(cg, base) && "operand mismatch for LEA assimilation");
+ index = assim_lea_idx;
+ }
+ else if (! be_is_NoReg(cg, assim_lea_base) && be_is_NoReg(cg, assim_lea_idx)) {
+ /* assimilate base */
+ assert(! be_is_NoReg(cg, index) && (base == left) && "operand mismatch for LEA assimilation");
+ base = assim_lea_base;
+ }
+ else {
+ assert(0 && "operand mismatch for LEA assimilation");
+ }