$DragonFly: src/gnu/usr.bin/cc34/cc_prep/patches/optabs.c.patch,v 1.2 2004/06/20 00:10:52 joerg Exp $ diff -u ../gcc.orig/optabs.c optabs.c --- ../gcc.orig/optabs.c 2004-06-19 22:27:13.000000000 +0200 +++ optabs.c 2004-06-20 01:16:04.000000000 +0200 @@ -678,6 +678,26 @@ if (target) target = protect_from_queue (target, 1); + if (flag_propolice_protection + && binoptab->code == PLUS + && op0 == virtual_stack_vars_rtx + && GET_CODE(op1) == CONST_INT) + { + int icode = (int) binoptab->handlers[(int) mode].insn_code; + if (target) + temp = target; + else + temp = gen_reg_rtx (mode); + + if (! (*insn_data[icode].operand[0].predicate) (temp, mode) + || GET_CODE (temp) != REG) + temp = gen_reg_rtx (mode); + + emit_insn (gen_rtx_SET (VOIDmode, temp, + gen_rtx_PLUS (GET_MODE (op0), op0, op1))); + return temp; + } + if (flag_force_mem) { /* Load duplicate non-volatile operands once. */