1 $DragonFly: src/gnu/usr.bin/cc34/cc_prep/patches/explow.c.patch,v 1.1 2004/06/19 10:30:08 joerg Exp $
3 --- ../gcc.orig/explow.c 2004-06-18 23:08:11.000000000 +0200
4 +++ explow.c 2004-06-18 23:18:11.000000000 +0200
11 + && ! (flag_propolice_protection && x == virtual_stack_vars_rtx))
21 + || (flag_propolice_protection && x == virtual_stack_vars_rtx))
22 x = gen_rtx_PLUS (mode, x, GEN_INT (c));
24 if (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF)
26 if (memory_address_p (mode, oldx))
29 + /* The stack protector keeps the addressing style of a local variable.
30 + LEGITIMIZE_ADDRESS changes the addressing to the machine-dependent
31 + style, so the protector split the frame address to a register using
33 + if (flag_propolice_protection)
35 +#define FRAMEADDR_P(X) (GET_CODE (X) == PLUS \
36 + && XEXP (X, 0) == virtual_stack_vars_rtx \
37 + && GET_CODE (XEXP (X, 1)) == CONST_INT)
39 + if (FRAMEADDR_P (x))
41 + for (y = x; y != 0 && GET_CODE (y) == PLUS; y = XEXP (y, 0))
43 + if (FRAMEADDR_P (XEXP (y, 0)))
44 + XEXP (y, 0) = force_reg (GET_MODE (XEXP (y, 0)), XEXP (y, 0));
45 + if (FRAMEADDR_P (XEXP (y, 1)))
46 + XEXP (y, 1) = force_reg (GET_MODE (XEXP (y, 1)), XEXP (y, 1));
49 /* Perform machine-dependent transformations on X
50 in certain cases. This is not necessary since the code
51 below can handle all possible cases, but machine-dependent