diff options
author | Jozef Lawrynowicz <jozef.l@mittosystems.com> | 2018-07-31 18:17:00 +0000 |
---|---|---|
committer | Jozef Lawrynowicz <jozefl@gcc.gnu.org> | 2018-07-31 18:17:00 +0000 |
commit | b06e1dcec5e7e29d12988dc8d2a6d4183f6c91df (patch) | |
tree | b7e96c84e605e1248abeaed0c69f3a360b7b8e6e /gcc/cfgexpand.c | |
parent | 31f52518d4a2c1446692c35de01f3b54f2f544c7 (diff) | |
download | gcc-b06e1dcec5e7e29d12988dc8d2a6d4183f6c91df.tar.gz |
re PR middle-end/86705 (pr45678-2.c ICE with msp430-elf -mlarge)
PR middle-end/86705
* gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when
MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the
requested variable alignment.
(expand_one_ssa_partition): Likewise.
(expand_one_var): Likewise.
From-SVN: r263177
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index d6e3c382085..7353d5dce12 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -1257,10 +1257,10 @@ set_parm_rtl (tree parm, rtx x) allocate it, which means that in-frame portion is just a pointer. ??? We've got a pseudo for sure here, do we actually dynamically allocate its spilling area if needed? - ??? Isn't it a problem when POINTER_SIZE also exceeds - MAX_SUPPORTED_STACK_ALIGNMENT, as on cris and lm32? */ + ??? Isn't it a problem when Pmode alignment also exceeds + MAX_SUPPORTED_STACK_ALIGNMENT, as can happen on cris and lm32? */ if (align > MAX_SUPPORTED_STACK_ALIGNMENT) - align = POINTER_SIZE; + align = GET_MODE_ALIGNMENT (Pmode); record_alignment_for_reg_var (align); } @@ -1381,7 +1381,7 @@ expand_one_ssa_partition (tree var) /* If the variable alignment is very large we'll dynamicaly allocate it, which means that in-frame portion is just a pointer. */ if (align > MAX_SUPPORTED_STACK_ALIGNMENT) - align = POINTER_SIZE; + align = GET_MODE_ALIGNMENT (Pmode); record_alignment_for_reg_var (align); @@ -1608,7 +1608,7 @@ expand_one_var (tree var, bool toplevel, bool really_expand) /* If the variable alignment is very large we'll dynamicaly allocate it, which means that in-frame portion is just a pointer. */ if (align > MAX_SUPPORTED_STACK_ALIGNMENT) - align = POINTER_SIZE; + align = GET_MODE_ALIGNMENT (Pmode); } record_alignment_for_reg_var (align); |