diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2015-12-07 16:45:45 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2015-12-07 16:45:45 +0000 |
commit | 058c6384fe443310b1788dcdc8880beba24d6b43 (patch) | |
tree | 2e641b887cd6d08eba392818062c5fa46e53f8ae /gcc/cfgexpand.c | |
parent | 5dd2902aa1bf772c53951ae9998645d4b89d50ae (diff) | |
download | gcc-058c6384fe443310b1788dcdc8880beba24d6b43.zip gcc-058c6384fe443310b1788dcdc8880beba24d6b43.tar.gz gcc-058c6384fe443310b1788dcdc8880beba24d6b43.tar.bz2 |
re PR middle-end/68291 (ICE in emit_move_insn, at expr.c:3540)
PR middle-end/68291
PR middle-end/68292
* cfgexpand.c (set_rtl): Always accept PARALLELs with BLKmode for
SSA names based on RESULT_DECLs.
* function.c (expand_function_start): Do not create BLKmode REGs
for GIMPLE registers when coalescing is enabled.
From-SVN: r231372
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 0cf4172..5338c25 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -184,10 +184,15 @@ set_rtl (tree t, rtx x) || SUBREG_P (XEXP (x, 0))) && (REG_P (XEXP (x, 1)) || SUBREG_P (XEXP (x, 1)))) + /* We need to accept PARALLELs for RESUT_DECLs + because of vector types with BLKmode returned + in multiple registers, but they are supposed + to be uncoalesced. */ || (GET_CODE (x) == PARALLEL && SSAVAR (t) && TREE_CODE (SSAVAR (t)) == RESULT_DECL - && !flag_tree_coalesce_vars)) + && (GET_MODE (x) == BLKmode + || !flag_tree_coalesce_vars))) : (MEM_P (x) || x == pc_rtx || (GET_CODE (x) == CONCAT && MEM_P (XEXP (x, 0)) |